R中的和混合列:求和整数单元格,连接字符单元格

时间:2016-11-22 00:51:09

标签: r

我在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

这可能吗?我尝试查找dplyraggregate的教程,但遇到了错误和混淆。我不确定是否有针对我需求的东西。

感谢。

1 个答案:

答案 0 :(得分:0)

创建一个行的索引,其中' NAME'是苹果'或者' orange'

i1 <- df1$NAME %in% c("apple", "orange")

然后找到整数和字符列

i2 <- sapply(df1, is.numeric)

并使用索引对行,列进行子集化,遍历非整数列,paste将它们放在一起,类似地,遍历整数列,获取sum,附加list 1}}与原始数据集

一起使用crbind
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