【问题标题】:Drop individuals from a data frame with not enough observations R从没有足够观察值的数据框中删除个体 R
【发布时间】:2023-01-20 19:00:14
【问题描述】:

我有以下数据结构:

df <- data.frame(year = c(1980, 1981, 1982, 1983, 1984, 1980, 1981, 1982, 1983, 1980, 1981, 1982, 1983, 1984), 
                id = c(1,1,1,1,1,2,2,2,2,3,3,3,3,3), 
                value = c(4,3,5,8,9,5,1,5,6,4,5,6,3,2))

该数据库包含 1980 年至 1984 年每个人(ID = 1、2 和 3)的观察结果。但是,一个人(id = 2)缺少一年的观察结果。我想识别那个人并将其从我的数据框中删除。

所以预期的输出如下:

year id value
1  1980  1     4
2  1981  1     3
3  1982  1     5
4  1983  1     8
5  1984  1     9
6  1980  3     4
7  1981  3     5
8  1982  3     6
9  1983  3     3
10 1984  3     2

我首先计算每个 ID 的观察值,但随后我不知道如何告诉 R 选择具有 5 个观察值的那些 ID 行(5 = 研究期间的最大年数):

summary <- df %>% 
  group_by(id) %>% 
  summarise(headcount = n())

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    n_distinct

    library(dplyr)
    df %>% 
      group_by(id) %>% 
      filter(n_distinct(year) >= 5)
    
    # A tibble: 10 × 3
    # Groups:   id [2]
        year    id value
       <dbl> <dbl> <dbl>
     1  1980     1     4
     2  1981     1     3
     3  1982     1     5
     4  1983     1     8
     5  1984     1     9
     6  1980     3     4
     7  1981     3     5
     8  1982     3     6
     9  1983     3     3
    10  1984     3     2
    

    【讨论】:

      【解决方案2】:
      new_df <- df %>% group_by(id) %>% filter(length(id)>4)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-07
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多