如何解决根据 R data.frame 中的可用数据分配评分?
我有以下两个 data.frame
。我想从 Grade
获取 D1
并分配给 Pts
中的 D
。操作完成后,D
data.frame
应该有 Pts
、Val
和 Grade
列,没有 C
或 Good
Grade
。
D <- data.frame(Pts= c("A","B","D"),Val = c(3.5,4,5))
D1 = data.frame(Pts = c("A","C",Grade = c("Ugly","Bad","Good","Excellent"))
D$Grade <- D1$Grade
解决方法
您可以使用左连接:
library(dplyr)
D %>%
left_join(D1,by="Pts")
,
我们可以在 data.table
中使用 join,方法是通过 'Pts' 列加入 on
并将 (:=
) 'Grade' 从 D1 分配到 D
library(data.table)
setDT(D)[D1,Grade := Grade,on = .(Pts)]
-输出
D
Pts Val Grade
1: A 3.5 Ugly
2: B 4.0 Bad
3: D 5.0 Excellent
在 base R
中,可以用 merge
或更快的 match
来做同样的事情
D$Grade <- D1$Grade[match(D$Pts,D1$Pts)]
代码行
D$Grade <- D1$Grade
由于多种原因无法工作
- 行数不一样
- 即使行数相同,两个数据集中的“Pts”也可能不匹配元素
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。