计数并从数据集中删除
count and remove from dataset
如果条件满足,我想从我的数据集中删除某些人。我有面板数据,理想情况下,我想计算每个人完成的次数,如果有人从未完成任何事情,则将其从我的数据集中删除。
people <- c(1,1,1,2,2,3,3,4,4,5,5)
activity <- c(1,1,1,2,2,3,4,5,5,6,6)
completion <- c(0,0,1,0,1,1,1,0,0,0,1)
完成0表示没有完成,1表示完成。
所以,在这种情况下,我需要检测 4 号人从未完成 activity 5,因此将从数据集中完全删除所有行。然而,这只让我知道 activitys 从未完成,即使一些 activitys 最终会完成。
然后我会像那样删除它们。
我试过 运行 ifelse 条件:
df$nevercompleted <- ifelse(df$completion == 0)
df<-subset(df,completion == 0)
一个dplyr
解决方案。
## Create the dataframe
df <- tibble(
people = c(1,1,1,2,2,3,3,4,4,5,5),
activity = c(1,1,1,2,2,3,4,5,5,6,6),
completion = c(0,0,1,0,1,1,1,0,0,0,1))
df %>%
## Group observations by people
group_by(people) %>%
## Create total completions per individual
mutate(tot_completion = sum(completion)) %>%
## Keep only people with strictly positive number of completions
filter(tot_completion > 0)
选项base R
df[with(df, ave(completion, people, FUN = sum)) > 0,]
如果条件满足,我想从我的数据集中删除某些人。我有面板数据,理想情况下,我想计算每个人完成的次数,如果有人从未完成任何事情,则将其从我的数据集中删除。
people <- c(1,1,1,2,2,3,3,4,4,5,5)
activity <- c(1,1,1,2,2,3,4,5,5,6,6)
completion <- c(0,0,1,0,1,1,1,0,0,0,1)
完成0表示没有完成,1表示完成。
所以,在这种情况下,我需要检测 4 号人从未完成 activity 5,因此将从数据集中完全删除所有行。然而,这只让我知道 activitys 从未完成,即使一些 activitys 最终会完成。 然后我会像那样删除它们。 我试过 运行 ifelse 条件:
df$nevercompleted <- ifelse(df$completion == 0)
df<-subset(df,completion == 0)
一个dplyr
解决方案。
## Create the dataframe
df <- tibble(
people = c(1,1,1,2,2,3,3,4,4,5,5),
activity = c(1,1,1,2,2,3,4,5,5,6,6),
completion = c(0,0,1,0,1,1,1,0,0,0,1))
df %>%
## Group observations by people
group_by(people) %>%
## Create total completions per individual
mutate(tot_completion = sum(completion)) %>%
## Keep only people with strictly positive number of completions
filter(tot_completion > 0)
选项base R
df[with(df, ave(completion, people, FUN = sum)) > 0,]