我有大量的巨大数据帧。通常在这些数据框中,我会按顺序出现具有相似名称的列组。以下是此类数据框的简化版本:
> tmp <- data.frame(ID = 1:25,
Item1 = sample(x = 1:4, size = 25, replace = TRUE),
Item2 = sample(x = 1:4, size = 25, replace = TRUE),
Item3 = sample(x = 1:4, size = 25, replace = TRUE),
Item4 = sample(x = 1:4, size = 25, replace = TRUE),
Item5 = sample(x = 1:4, size = 25, replace = TRUE),
Item6 = sample(x = 1:4, size = 25, replace = TRUE),
Item7 = sample(x = 1:4, size = 25, replace = TRUE),
Quest = rep(x = 20, times = 25))
我需要找到一种通过名称范围而不是位置索引这些列的方法。说我需要将列从索引Item4
到Item7
。我可以执行以下操作:
> tmp[ , c("Item4", "Item5", "Item6", "Item7")]
当您有数百个名称相似的列时,效果会不太好。我想做类似的事情:
> tmp[ , c("Item4":"Item7")]
但这会引发错误:
Error in "Item1":"Item7" : NA/NaN argument
In addition: Warning messages:
1: In `[.data.frame`(tmp, , c("Item1":"Item7")) :
NAs introduced by coercion
2: In `[.data.frame`(tmp, , c("Item1":"Item7")) :
NAs introduced by coercion
此外,我想使用这种索引来操作列的属性,例如(使用列出所有列名称的前一种方法)
> labels.Item4to7 <- c("Disagree", "Somewhat disagree",
"Somewhat agree", "Agree")
> tmp[ , c("Item4", "Item5", "Item6", "Item7")] <- lapply(tmp[ , c("Item4",
"Item5", "Item6", "Item7")], factor, labels = labels.Item4to7)
但是将列名称范围定义为Item4:Item7
。
先感谢您。
使用功能
tmp[,which(names(tmp)=="Item4"):which(names(tmp)=="Item7")]
可以通过以下方法将项目4更改为7:
labels.Item4to7 <- c("Disagree", "Somewhat disagree",
"Somewhat agree", "Agree")
tmp[,which(names(tmp)=="Item4"):which(names(tmp)=="Item7")]<-
lapply(tmp[,which(names(tmp)=="Item4"):which(names(tmp)=="Item7")],
factor,labels=labels.Item4to7)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句