r - 在 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 中有没有简单的方法可以做到这一点?感谢您的任何建议。
解决方案
假设您有如下查找数据框:
df1 <- data.frame(products = 1:5,
value = c('apple', 'peach', 'carrot', 'tomato', 'pear'))
我们可以将逗号分隔的值放入单独的行中,然后用df1
by连接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"))
推荐阅读
- java-8 - 地图有列表作为值检查是否为空
- polymer - 用于 firefox 的 Polymer 3.0 Polyfils
- java - java.lang.ClassNotFoundException :Erreur lors de la configuration de la classe d'écoute de l'application
- email - Flask HTML 电子邮件未呈现
- android - 提高 android 应用程序中以编程方式捕获的图像的质量
- symfony - Symfony/Doctrine2 和关联实体
- java - SchemaSpy PostgreSQL - 警告 - 连接失败
- javascript - 在 Javascript 中使用异步结果的最简洁方法
- reactjs - 如何在 ReactJS 中创建搜索字段
- database - 数据库中被视为数据重复的限制在哪里?