首页 > 解决方案 > 从 R 中的 data.table 中的值替换数据框中的所有值

问题描述

我对 R 相当陌生,并且正在尝试替换我的 data.frame 中的值,这些值从名为df的 data.table 中的相应值命名dtb。我的 data.table 只是我的 data.frame 中所有唯一值的计数,如下所示:

df
  fruits
1 apple
2 pear
3 banana
4 apple
5 banana  


dtb
     fruits    N
1    apple     2
2    pear      1
3    banana    2

我希望用基于名称的计数替换我的原始 data.frame 值。输出看起来像这样:

df
  fruits
1 2
2 1
3 2
4 2
5 2 

我试图查看观察结果并检查它是否在数据表的水果列中,但我正在苦苦挣扎。有人可以在这里帮助我吗?谢谢

标签: rdataframedata.table

解决方案


您可以使用包中的join()函数dplyr然后选择并重命名新列:

# 1. join by "fruits" column, i.e. create a new corresponding N column
# 2. select only column N and rename it to "fruits"
df %>%
  left_join(dtb, by = "fruits") %>%
  select(fruits = N)
#>   fruits
#> 1      2
#> 2      1
#> 3      2
#> 4      2
#> 5      2

reprex 包(v0.3.0)于 2020 年 7 月 24 日创建

数据

df <- structure(list(fruits = c("apple", "pear", "banana", "apple", 
"banana")), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5"))

dtb <- structure(list(fruits = c("apple", "pear", "banana"), N = c(2L, 
1L, 2L)), row.names = c(NA, -3L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x0000021f51801ef0>)

推荐阅读