我正在处理不平衡的面板数据集。数据来自游戏,记录中的每个用户(user_id
)都有游戏每个级别(level
)的数据。在开始引入游戏后的一段时间内开始记录数据时,对于某些用户,我没有有关第一级的数据,这就是为什么我要第一步将它们丢弃的原因。
我已经尝试了complete.cases函数,但是它仅排除了具有缺失值(NA)的行,但不排除级别1中具有缺失值的整个用户的数据。
panel <- panel[complete.cases(panel), ]
这就是为什么我需要一个代码来排除每个没有1级记录的用户的原因(在我的数据集中,这意味着他的因变量之一(即活动数)为“ NA”)。
更新#1: 数据如下所示(感谢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
我现在想从玩家1排除数据,因为他在1级的得分为0。
答案 0 :(得分:0)
这是一种方法
示例数据:
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
答案 1 :(得分:0)
我想我现在可以在您的帮助下找到解决方案:
game_data %>% group_by(player) %>% filter(any(level == 1 & score > 0)) %>% as.data.frame
这似乎可行,我只需要对您的代码进行一点调整,非常感谢您的帮助!