简体   繁体   中英

Panel Data in R: Get complete cases of data based on individuals

I'm working on an unbalanced panel dataset. Data came from a game and for every user ( user_id ) in the record I have data for every level ( level ) of the game. As recording data started some time after introduction of the game, for some users I don't have data regarding the first levels, that's why I want to throw them out in a first step.

I've tried the complete.cases-function, but it only excludes the rows with the missing values (NAs), but not data for the whole user with missing values in level 1.

panel <- panel[complete.cases(panel), ] 

That's why I need a code that excludes every user who has no record in level 1 (which in my dataset means he has an "NA" at one of the dependent variables, ie number of activities).

Update #1: Data looks like this (thanks to thc):

> game_data <- data.frame(player = c(1,1,1,2,2,2,3,3,3), level = c(1,2,3,1,2,3,1,2,3), score=c(0,150,170,80,100,110,75,100,0))
> game_data
  player level score
1      1     1     0
2      1     2   150
3      1     3   170
4      2     1    80
5      2     2   100
6      2     3   110
7      3     1    75
8      3     2   100
9      3     3     0

I now want to exclude data from player 1, because he has a score of 0 in level 1.

Here is one approach

Example data:

game_data <- data.frame(player = c(1,1,2,2,2,3,3,3), level = c(2,3,1,2,3,1,2,3), score=sample(100, 8))
> game_data
  player level score
1      1     2    19
2      1     3    13
3      2     1    65
4      2     2    32
5      2     3    22
6      3     1    98
7      3     2    58
8      3     3    84


library(dplyr)
game_data %>% group_by(player) %>% filter(any(level == 1)) %>% as.data.frame
  player level score
1      2     1    65
2      2     2    32
3      2     3    22
4      3     1    98
5      3     2    58
6      3     3    84

I think I now find a solution with your help:

game_data %>% group_by(player) %>% filter(any(level == 1 & score > 0)) %>% as.data.frame

This seems to work and I just needed a little adjustment from your code thc, thank you very much for your help!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM