r - 在新列中填充循环计数
问题描述
我正在尝试计算 df1 的 A 列中的每个行值出现在 df2 的 B 列中的次数,然后在 df1 的新列中填充相应的计数。
df1
ColumnA
A_10
A_11
A_12
A_13
A_14
df2
ColumnB
A_10, A_50
A_10, A_50
A_14, A_50
A_50, A_10
期望的输出
ColumnA New_Column
A_10 3
A_11 0
A_12 0
A_13 0
A_14 1
我的代码:
df1$new_column <- 0
for (i in df1$ColumnA) {
df$new_column[i] <- sum(grepl(i, df2$ColumnB), na.rm = TRUE)
}
一整天都在绞尽脑汁,包括查看论坛问题-我在这里做错了什么?
解决方案
df2
我们可以用逗号分割数据,count
每个单独的条目并用df1
. 我们将NA
值替换为 0。
library(dplyr)
library(tidyr)
df2 %>%
separate_rows(ColumnB, sep = ',\\s*') %>%
count(ColumnB) %>%
right_join(df1, by = c('ColumnB' = 'ColumnA')) %>%
mutate(n = replace_na(n, 0))
# ColumnB n
# <chr> <dbl>
#1 A_10 3
#2 A_14 1
#3 A_11 0
#4 A_12 0
#5 A_13 0
并使用grepl
:
df1$New_Column <- sapply(df1$ColumnA, function(x) sum(grepl(x, df2$ColumnB)))
推荐阅读
- java - 我如何在电报中共享音频
- javascript - Produce Object from Array of Two Objects
- java - 从多个通知托盘中点击相同的活动,每个托盘都有不同的数据
- algorithm - 具有两个指定通过点的最短简单路径
- python-3.x - 在类中正确定义变量的问题
- ios - 在 SpriteKit 中编写一个围绕像素精灵创建轮廓的着色器
- maven - 使用来自 maven 的 JavaFX11 构建可执行 JAR
- spring-boot - 在 Spring Boot 中使用 ConfigurationProperties
- c++ - is_invocable_r 忽略返回参数
- for-loop - 有值的列表。如果项目多次存在,增加价值?