我在R中有一个混合字符和整数数据框:
NAME ID X Y Z
1 apple a123p 1.0 2.0 3.0
2 orange o483e 4.0 5.0 6.0
3 grape g302e 1.0 1.5 2.0
其中只有列Name
包含字符,其余列(ID, X, Y, Z
)包含整数。我想将某些列添加到一起:对整数求和,并加入字符。
如果添加了apple + orange,则需要输出:
NAME ID X Y Z
1 apple a123p 1.0 2.0 3.0
2 orange o483e 4.0 5.0 6.0
3 grape g302e 1.0 1.5 2.0
4 apple_orange a123p_o483 5.0 7.0 9.0
这可能吗?我尝试查找dplyr
和aggregate
的教程,但遇到了错误和混淆。我不确定是否有针对我需求的东西。
感谢。
答案 0 :(得分:0)
创建一个行的索引,其中' NAME'是苹果'或者' orange'
i1 <- df1$NAME %in% c("apple", "orange")
然后找到整数和字符列
i2 <- sapply(df1, is.numeric)
并使用索引对行,列进行子集化,遍历非整数列,paste
将它们放在一起,类似地,遍历整数列,获取sum
,附加list
1}}与原始数据集
c
和rbind
rbind(df1, c(lapply(df1[i1, !i2], paste, collapse="-"), lapply(df1[i1, i2], sum)))
# NAME ID X Y Z
#1 apple a123p 1 2.0 3
#2 orange o483e 4 5.0 6
#3 grape g302e 1 1.5 2
#4 apple-orange a123p-o483e 5 7.0 9