【问题标题】:Panel Data in R: Get complete cases of data based on individualsR 中的面板数据:获取基于个人的完整数据案例
【发布时间】:2018-10-17 15:06:42
【问题描述】:

我正在处理一个不平衡的面板数据集。数据来自游戏,对于记录中的每个用户 (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。

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。这样可以更轻松地为您提供帮助。
  • 谢谢,以后我当然会这样做。

标签: r panel data-transform


【解决方案1】:

这是一种方法

示例数据:

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

【讨论】:

  • 您好,感谢您的帮助!更像是这样: > game_data game_data 玩家等级得分 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,但没有玩家 3,他只是在关卡 2 停止使用游戏。我现在想扔掉
【解决方案2】:

我想我现在在你的帮助下找到了解决方案:

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

这似乎可行,我只需要对您的代码进行一些调整,非常感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多