我是R.的新手。在数据框架中,我想创建一个新的第21列,它等于第1列到第20列的总和。
我知道我能做到
df$Col21<-df$Col1+df$Col2+.....+df$Col20
但是有更简洁的表达吗?
另外,如果使用列名而不是数字,我可以实现这一点吗?谢谢!
答案 0 :(得分:3)
有rowSums:
df$Col21 = rowSums(df[,1:20])
应该做的伎俩,名字:
df$Col21 = rowSums(df[,paste("Col", 1:20, sep="")])
使用前导零和3位数字,尝试:
df$Col21 = rowSums(df[,sprintf("Col%03d", 1:20, sep="")])
答案 1 :(得分:0)
我发现列选择的dplyr
函数非常直观,例如starts_with(), ends_with(), contains(), matches()
和num_range()
:
df <- as.data.frame(replicate(20, runif(10)))
names(df) <- paste0("Col", 1:20)
library(dplyr)
# e.g.
summarise_each(df, funs(sum), starts_with("Col"))
# or
rowSums(select(df, contains("8")))