R 求和频率,然后删除行
我制作了一个示例数据框,它表示具有特定评级的特定城市中的事件数量R 求和频率,然后删除行,r,R,我制作了一个示例数据框,它表示具有特定评级的特定城市中的事件数量 data <- data.frame(country=c("Amsterdam", "Amsterdam", "Amsterdam", "New York", "New York", "London", "London", "Berlin"), rating=c(0.5, 0.4, 0.6, 0.3, 0.4, 0.8, 0.3, 0.3),
data <- data.frame(country=c("Amsterdam", "Amsterdam", "Amsterdam", "New York", "New York", "London", "London", "Berlin"),
rating=c(0.5, 0.4, 0.6, 0.3, 0.4, 0.8, 0.3, 0.3),
events=c(1, 1, 0, 1, 1, 0, 0, 0))
data您可以使用tidyverse
包按事件总和过滤数据
library(tidyverse)
data %>%
group_by(country) %>%
filter(sum(events) > 0)
您可以使用tidyverse
包按事件总和过滤数据
library(tidyverse)
data %>%
group_by(country) %>%
filter(sum(events) > 0)
数据表解决方案:
library(data.table)
data <- as.data.table(data)
data[, .SD[sum(events) > 0], by = country]
country rating events
1: Amsterdam 0.5 1
2: Amsterdam 0.4 1
3: Amsterdam 0.6 0
4: New York 0.3 1
5: New York 0.4 1
库(data.table)
数据0],按=国家]
国家评级活动
1:阿姆斯特丹0.51
2:阿姆斯特丹0.4 1
3:阿姆斯特丹0.60
4:纽约0.31
5:纽约0.41
A data.table解决方案:
library(data.table)
data <- as.data.table(data)
data[, .SD[sum(events) > 0], by = country]
country rating events
1: Amsterdam 0.5 1
2: Amsterdam 0.4 1
3: Amsterdam 0.6 0
4: New York 0.3 1
5: New York 0.4 1
库(data.table)
数据0],按=国家]
国家评级活动
1:阿姆斯特丹0.51
2:阿姆斯特丹0.4 1
3:阿姆斯特丹0.60
4:纽约0.31
5:纽约0.41
trydata[with(data,ave(events,country,FUN=function(i)sum(i))>0]。
!非常感谢你!尝试data[data,ave(events,country,FUN=function(i)sum(i))>0]
成功了!非常感谢你!