在R中的数据帧的某些列中添加值

时间:2014-08-11 19:18:23

标签: r dataframe

我是R.的新手。在数据框架中,我想创建一个新的第21列,它等于第1列到第20列的总和。

我知道我能做到

df$Col21<-df$Col1+df$Col2+.....+df$Col20

但是有更简洁的表达吗?

另外,如果使用列名而不是数字,我可以实现这一点吗?谢谢!

2 个答案:

答案 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")))