我想使用 R 将数据帧中的特定行提取到新数据帧中。我有两列: CityHousehold 。为了检测移动,我想要一个包含不同城市的家庭的新数据框。

例如,如果一个家庭出现 3 次,其中至少有一个城市与其他城市不同,我会保留它。否则,我删除这个家庭的 3 行。

    City      Household
   Paris              A
   Paris              A
    Nice              A
  Limoge              B
  Limoge              B
Toulouse              C
   Paris              C

在这里,我只想保留 Household A 和 Household C

最佳答案

dplyr 解决方案:计算每个家庭的唯一城市的长度,并只保留那些长度 > 1 的城市

library(dplyr)
df <- data.frame(city=c("Paris","Paris","Nice","Limoge","Limoge","Toulouse","Paris"),
                 household =c(rep("A",3),rep("B",2),rep("C",2)))

new_df <- df %>% group_by(household) %>%
  filter(n_distinct(city) > 1)

Source: local data frame [5 x 2]
Groups: household

      city household
1    Paris         A
2    Paris         A
3     Nice         A
4 Toulouse         C
5    Paris         C

编辑:从评论中添加了@shadow 和@davidarenburg 的建议

关于r - 如何提取R中的特定行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30525304/

10-11 09:13