首页 > 解决方案 > 在 R 中的单元格中查找值

问题描述

我想在列的每个单元格中查找由逗号分隔的单个 id 的值。

数据(df)如下所示:

  products
1 1,3,5
2 1,2
3 3
4 NA
5 4,5

我想从不同的 df (df1) 中查找每个数字的值,并得到如下结果:

  products
1 apple, carrot, pear
2 apple, peach
3 carrot
4 NA
5 tomato, pear

在 R 中有没有简单的方法可以做到这一点?感谢您的任何建议。

标签: r

解决方案


假设您有如下查找数据框:

df1 <- data.frame(products = 1:5, 
           value = c('apple', 'peach', 'carrot', 'tomato', 'pear'))

我们可以将逗号分隔的值放入单独的行中,然后用df1by连接products并将其汇总value为一个逗号分隔的字符串toString

library(dplyr)

df %>%
  mutate(row = row_number()) %>%
  tidyr::separate_rows(products, sep = ",", convert = TRUE) %>%
  left_join(df1, by = 'products') %>%
  group_by(row) %>%
  summarise(value = toString(value)) %>%
  select(-row)


# A tibble: 5 x 1
#  value              
#  <chr>              
#1 apple, carrot, pear
#2 apple, peach       
#3 carrot             
#4 NA                 
#5 tomato, pear       

数据

df <- structure(list(products = structure(c(2L, 1L, 3L, NA, 4L), .Label = c("1,2", 
"1,3,5", "3", "4,5"), class = "factor")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5"))

推荐阅读