我对 R 很陌生,这是我第一次敢在这里提问。
我正在使用带有李克特量表的数据集,我想对不同的列组进行行总和,这些列共享其名称中的第一个字符串。
下面我构建了一个只有 2 行的数据框来说明我遵循的方法,尽管我希望收到有关如何编写更有效的方法的反馈。
df <- as.data.frame(rbind(rep(sample(1:5),4),rep(sample(1:5),4)))
var.names <- c("emp_1","emp_2","emp_3","emp_4","sat_1","sat_2"
,"sat_3","res_1","res_2","res_3","res_4","com_1",
"com_2","com_3","com_4","com_5","cap_1","cap_2",
"cap_3","cap_4")
names(df) <- var.names
所以,我所做的是使用 grep 函数,以便能够对以某些字符串开头的指定变量的行求和,并将它们存储在一个新变量中。但是我必须为每个变量编写一行新代码。
df$emp_t <- rowSums(df[, grep("\\bemp.", names(df))])
df$sat_t <- rowSums(df[, grep("\\bsat.", names(df))])
df$res_t <- rowSums(df[, grep("\\bres.", names(df))])
df$com_t <- rowSums(df[, grep("\\bcom.", names(df))])
df$cap_t <- rowSums(df[, grep("\\bcap.", names(df))])
但是数据集中还有很多变量,我想知道是否有一种方法可以只用一行代码来做到这一点。例如,以某种方式将以相同字符串开头的变量分组在一起,然后应用行函数。
提前致谢!