【发布时间】:2016-08-05 23:14:28
【问题描述】:
我有一个包含 10 个数据帧的列表,每个数据帧有 3 列。我需要为每个带有字母的 data.frame 创建一个新列。这些字母必须有条件地分配给特定的 data.frame 列。
这是列表中我的 data.frame 之一:
[[10]]
x y z
1 24 20 15
2 25 15 25
3 25 14 20
必须从中分配新值的列是z。所以假设 15 = S,25 = A,20 = T。
我的带有新列的 data.frame 应该是:
[[10]]
x y z new_col
1 24 20 15 S
2 25 15 25 A
3 25 14 20 T
更新
我正在尝试使用我的真实数据(遵循@csgillespie 的建议):
lookup <- data.frame(num = c(-5, -1:8, 13:20, 25:32), let = c('P', 'A', 'E', 'AE', 'ASE', 'AS', 'ASW',
'ZQ', 'AW', 'AN', 'OQ', 'AA', 'RT', 'SE',
'S', 'QP', 'W', 'NW', 'N', 'C', 'YE', 'PP',
'ZQ', 'CS', 'L', 'CW', 'UW', 'CN'))
lst <- lapply(lst, function(i)
cbind(i, new_col=lookup[i$x, 2]))
但我收到以下错误,可能是由于查找 data.frame 上的负数:
[.default(xj, i) 中的错误:只有 0 可能与负数混合 下标
第二次更新
谢谢@m-dz!
工作完成:)
【问题讨论】: