【发布时间】:2015-01-26 20:37:13
【问题描述】:
我有一张这样的桌子:
前
dir E_numdir
45 OCAMPO 1253 2 1253, 2
74 BENITO LYNCH 1883 1883
24 PRESIDENTE DE LA PLA 148 148
其中 E_numdir 是一个字符 我需要评估 E_numdir 中每个数字的最后 2 位数字,如果它们为 0,则在另一列中获得标记。
为了评估这一点,我尝试了:
lapply(ex$E_numdir , function(w) str_sub(w, -2, -1))
但我只能从最后一个数字中得到最后 2 位数字。
所以我尝试了:
lapply(as.vector(unlist(strsplit(ex$E_numdir,",")),mode="list") , function(w) str_sub(w, -2, -1))
但我得到的行数比我的行数多。每个元素一个。
我需要得到另一列'xx'
dir E_numdir xx
45 OCAMPO 1253 2 1253, 2 53,2
74 BENITO LYNCH 1883 1883 83
24 PRESIDENTE DE LA PLA 148 148 48
如何将函数应用于所有数字但将结果存储在同一行中?
谢谢。
【问题讨论】:
-
使用
reshape2::colsplit之类的东西首先清理您的数据,这样您就不会在用逗号分隔的单个列中包含多个值。