我想不出一种简洁或有效的方式来表达这一点,但这就是我想要做的......
我有以下几点:
$first_name:“唐纳德”、“巴拉克”、“乔治”、“比尔”……
$last_name:“特朗普”、“奥巴马”、“布什”、“克林顿”……
和
$name:“唐纳德·约翰,特朗普”,“巴拉克·侯赛因,奥巴马”,“比尔·杰斐逊,克林顿”,“乔治·沃克,布什”,...
$值:0, 2, 4, 6, ...
我想:
$first_name:“唐纳德”、“巴拉克”、“乔治”、“比尔”……
$last_name:“特朗普”、“奥巴马”、“布什”、“克林顿”……
$值:0, 2, 4, 6, ...
需要注意的是:
没有办法从“答案关键”数据框中知道隐喻的中间名(无需目视检查数千列)。
名称的排列方式不同(与我显示的方式相反)。
$first_name 和 $last_names 在感兴趣的数据框中重复。
迄今为止
我已经设法使 $first_name 的格式与 $name 中的格式相同(也就是说,我现在有“Bill”和“CLINTON”,但我不知道如何将它们连接到“Bill”杰斐逊,克林顿”<- 6)。我最初计划以某种方式使用 grep() 来匹配它们,但我认为这是不可能的,因为您似乎不能将向量用于“模式=”。
这两个似乎相关,至少在概念上,但我只是在画一个空白。
使用来自另一个数据框中的唯一值和分配给列的相应值的列名称创建新数据框
先感谢您。
我们从第二个数据集中提取子字符串,执行 amatch
并使用它来获取“值”
df1$value <- df2$value[match(do.call(paste, df1), toupper(sub("\\s+\\w+,", "", df2$name)))]
df1
# first_name last_name value
#1 DONALD TRUMP 0
#2 BARACK OBAMA 2
#3 GEORGE BUSH 6
#4 BILL CLINTON 4
df1 <- data.frame(first_name = c("DONALD", "BARACK", "GEORGE", "BILL"),
last_name = c("TRUMP", "OBAMA", "BUSH", "CLINTON"), stringsAsFactors=FALSE)
df2 <- data.frame(name = c("Donald John, TRUMP", "Barack Hussein, OBAMA",
"Bill Jefferson, CLINTON",
"George Walker, BUSH"), value = c(0, 2, 4, 6) , stringsAsFactors=FALSE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句