在R中计算另一个数据帧中的元素
我需要在第一个数据帧中添加一个新列,其中包含第二个数据帧中相应id的出现次数。我创建了一个玩具示例来尝试这样做。我认为这需要一个for循环,但无法理解。以下是玩具数据集:在R中计算另一个数据帧中的元素,r,for-loop,R,For Loop,我需要在第一个数据帧中添加一个新列,其中包含第二个数据帧中相应id的出现次数。我创建了一个玩具示例来尝试这样做。我认为这需要一个for循环,但无法理解。以下是玩具数据集: id <- c(1:10) gender <- c('M','M','M','F','F','F','M','F','F','F') age <- c(23,33,45,66,12,6,18,31,26,77) first_df <- data.frame(id,gender,age) id <
id <- c(1:10)
gender <- c('M','M','M','F','F','F','M','F','F','F')
age <- c(23,33,45,66,12,6,18,31,26,77)
first_df <- data.frame(id,gender,age)
id <- c(1,3,8,1,2,3,7,9)
second_df <- data.frame(id)
id这里有一个使用base R
的解决方案:
second_df <- as.data.frame(table(second_df))
first_df <- merge(x = first_df, y = second_df, by.x = 'id', by.y = 'second_df', all = TRUE)
first_df$Freq[is.na(first_df$Freq)] <- 0
names(first_df)[4] <- 'N'
这将为您提供:
id gender age n
1 1 M 23 2
2 2 M 33 1
3 3 M 45 2
4 4 F 66 0
5 5 F 12 0
6 6 F 6 0
7 7 M 18 1
8 8 F 31 1
9 9 F 26 1
10 10 F 77 0
您可以使用连接
。此处,summary
统计每个id
在second\u df
中出现的次数,并将该值存储在numb
中。然后internal\u join
将second\u df
附加到first\u df
匹配id
library(dplyr)
second_df <- second_df %>%
group_by(id) %>%
summarise(numb = n())
first_df %>%
left_join(second_df, by = "id")
id gender age numb
1 1 M 23 2
2 2 M 33 1
3 3 M 45 2
4 4 F 66 NA
5 5 F 12 NA
6 6 F 6 NA
7 7 M 18 1
8 8 F 31 1
9 9 F 26 1
10 10 F 77 NA
库(dplyr)
第二个单位df%
分组依据(id)%>%
总结(numb=n())
第一个_df%>%
左联合(第二次联合,by=“id”)
性别年龄麻木
1米23 2
2米33 1
3米45 2
4 F 66 NA
5F 12NA
6F6NA
7米18 1
8 F 31 1
9 F 26 1
10 F 77 NA
首个df$计数
library(dplyr)
second_df <- second_df %>%
group_by(id) %>%
summarise(numb = n())
first_df %>%
left_join(second_df, by = "id")
id gender age numb
1 1 M 23 2
2 2 M 33 1
3 3 M 45 2
4 4 F 66 NA
5 5 F 12 NA
6 6 F 6 NA
7 7 M 18 1
8 8 F 31 1
9 9 F 26 1
10 10 F 77 NA
first_df$counts <- lapply(first_df$id, function(x) sum(x == id))