子集数据框 - 分组和多个值R
Subset a dataframe - grouped and multiple values R
我正在尝试通过一列中的多个值对数据框进行子集化。
输入如下:
输出应该是:
所以我只想要新数据框中的行,其中包含“自动”列中的 0 和 1 - 为每个商店分组。
已经试过了,但没用:
测试 <- 子集(原始数据,Auto
== 0 &Auto
== 1)
测试 <- 子集(原始数据,最小值(Auto
)== 0 & 最大值(Auto
)== 1)
测试<- rawdata[ which(rawdata$Auto
'==0 & rawdata$Auto
== 1), ]
感谢您的帮助。
此致
根据你的问题,你想做什么不是很清楚。
如果我解释正确,你想保留每一行出现 1 和 0 的商店。
要做到这一点,一种可能的解决方案可能是计算每个商店的行数,并检查该值是否与 auto 的总和相同(表示全为 1)或等于 0(表示全为 0) .
如果满足该条件,您希望排除商店的所有行。
查看函数 summarise。
这是您要找的吗?
library(magrittr)
library(dplyr)
#Toy data.
df <- data.frame(Shop = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Order = c(1, 2, 3, 1, 2, 3, 1 , 2, 3),
Auto = c(0, 0, 1, 1, 1, 1, 0, 0, 0))
#Solution.
df %>%
group_by(Shop) %>%
filter(n_distinct(Auto) > 1) %>%
ungroup()
# # A tibble: 3 × 3
# Shop Order Auto
# <dbl> <dbl> <dbl>
# 1 1 1 0
# 2 1 2 0
# 3 1 3 1
这里的关键思想是使用 dplyr::n_distinct()
来计算每个 Shop
组中 Auto
中 唯一 值的数量,然后仅保留那些具有超过 1
n_distinct
个值的组。
请不要以图片形式添加数据,请以reproducible format
格式提供数据
您可以 select 0 和 1 都存在的 Shop
。
library(dplyr)
df %>%
group_by(Shop) %>%
filter(all(c(0, 1) %in% Auto)) %>%
ungroup
# Shop Order Auto
# <dbl> <dbl> <dbl>
#1 1 1 0
#2 1 2 0
#3 1 3 1
数据
df <- structure(list(Shop = c(1, 1, 1, 2, 2, 2, 3, 3, 3), Order = c(1,
2, 3, 1, 2, 3, 1, 2, 3), Auto = c(0, 0, 1, 1, 1, 1, 0, 0, 0)),
class = "data.frame", row.names = c(NA, -9L))
我正在尝试通过一列中的多个值对数据框进行子集化。
输入如下:
输出应该是:
所以我只想要新数据框中的行,其中包含“自动”列中的 0 和 1 - 为每个商店分组。
已经试过了,但没用:
测试 <- 子集(原始数据,Auto
== 0 &Auto
== 1)
测试 <- 子集(原始数据,最小值(Auto
)== 0 & 最大值(Auto
)== 1)
测试<- rawdata[ which(rawdata$Auto
'==0 & rawdata$Auto
== 1), ]
感谢您的帮助。 此致
根据你的问题,你想做什么不是很清楚。 如果我解释正确,你想保留每一行出现 1 和 0 的商店。
要做到这一点,一种可能的解决方案可能是计算每个商店的行数,并检查该值是否与 auto 的总和相同(表示全为 1)或等于 0(表示全为 0) .
如果满足该条件,您希望排除商店的所有行。
查看函数 summarise。
这是您要找的吗?
library(magrittr)
library(dplyr)
#Toy data.
df <- data.frame(Shop = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Order = c(1, 2, 3, 1, 2, 3, 1 , 2, 3),
Auto = c(0, 0, 1, 1, 1, 1, 0, 0, 0))
#Solution.
df %>%
group_by(Shop) %>%
filter(n_distinct(Auto) > 1) %>%
ungroup()
# # A tibble: 3 × 3
# Shop Order Auto
# <dbl> <dbl> <dbl>
# 1 1 1 0
# 2 1 2 0
# 3 1 3 1
这里的关键思想是使用 dplyr::n_distinct()
来计算每个 Shop
组中 Auto
中 唯一 值的数量,然后仅保留那些具有超过 1
n_distinct
个值的组。
请不要以图片形式添加数据,请以reproducible format
格式提供数据您可以 select 0 和 1 都存在的 Shop
。
library(dplyr)
df %>%
group_by(Shop) %>%
filter(all(c(0, 1) %in% Auto)) %>%
ungroup
# Shop Order Auto
# <dbl> <dbl> <dbl>
#1 1 1 0
#2 1 2 0
#3 1 3 1
数据
df <- structure(list(Shop = c(1, 1, 1, 2, 2, 2, 3, 3, 3), Order = c(1,
2, 3, 1, 2, 3, 1, 2, 3), Auto = c(0, 0, 1, 1, 1, 1, 0, 0, 0)),
class = "data.frame", row.names = c(NA, -9L))