【发布时间】:2021-03-28 14:02:17
【问题描述】:
我有两个数据框。第一个看起来像这样:
month Joanne K. Rowling Samuel L. Jackson
2000/01 1 0
2000/02 1 1
2000/03 0 1
2000/04 0 0
2000/05 0 1
2000/06 1 0
test_1
另一个是这样的
Name Score
Samuel Jackson 67
Joanne Rowling 52
test_2
我想将它们组合起来以获得以下数据框
month Joanne K. Rowling Samuel L. Jackson
2000/01 52 0
2000/02 52 67
2000/03 0 67
2000/04 0 0
2000/05 0 67
2000/06 52 0
其中值 1 被 test_2 中的分数替换。 test_1 中的 colnames 可能与 table_2 中的值略有不同,因此不应修复匹配。我找到了一种方法:
for(i in 1:nrow(test_2)) {
for(k in 1:ncol(test_1){
for(l in 1:nrow(test_1)){
if(grepl(test_2[i,6],as.data.frame(colnames(test_1))[k,1])) {
if(test_1[l,k]==1){
test_1[l,k]<-test_2[i,5]
}
}
}
}
}
但它的效率非常低,因为我必须将其应用于数据框列表。 请尝试编写一个尽可能少循环的有效方法
【问题讨论】:
标签: r string-matching