【发布时间】:2018-02-07 17:29:33
【问题描述】:
我有一个类似于以下的数据框:
A1U_sweet A2F_dip A3U_bbq C1U_sweet C2F_dip C3U_bbq
1 2 1 NA NA NA
NA NA NA 4 1 2
2 4 7 NA NA NA
我想创建额外的列来组合 A 值和 C 值。生成的数据框将包含看起来像 B1U_sweet 和 B2F_dip 的列。
A1U_sweet A2F_dip A3U_bbq C1U_sweet C2F_dip C3U_bbq B1U_sweet B2F_dip
1 2 1 NA NA NA 1 2
NA NA NA 4 1 2 4 1
2 4 7 NA NA NA 2 4
有没有一种方法可以让我创建这些额外的列,而无需将 A 列和 C 列一一合并?在过去,我将它们单独组合在一起,但如果有类似循环的东西匹配列 A1 和 C1、A2 和 C2 等,那就太好了。有 20 个“A”列和 20 个“C”列我想合并成“B”列。
编辑:解决方案是这里公认的答案:Combining columns in R based on matching beginnings of column title names
【问题讨论】:
-
我不确定您是如何“组合”这些列的,但您可以尝试:
res <- mapply(sum, df[, 1:3], df[, 4:6], na.rm=T)。如果有一种聪明的方法可以解析出名称,则将 1:3 和 4:6 替换为名称的字符向量。现在,grep('A', colnames(df))和grep('C', colnames(df))有效。