如果变量仅填充一年,如何删除ID?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果变量仅填充一年,如何删除ID?相关的知识,希望对你有一定的参考价值。

我有一个面板数据,其中缺少一些变量。我打算删除变量填充仅一年的ID(以及2,3等),因为这不会给我足够的历史记录。

我的示例数据如下:

id <- c('a','b','c','d','a','b','c','d','a','b','c','d','a','b','c', 'd')
time <- c(2000,2000,2000,2000,2001,2001,2001,2001,2002,2002,2002,2002, 2003,2003,2003,2003)
x <- c(1,2,NA,NA,4,5,NA,NA,7,8,9,NA,10,11,12,12)
y <- c(NA,2,NA,NA,4,5,NA,NA,7,8,9,NA,10,11,12,12)
z <- c(NA,2,NA,NA,4,5,NA,NA,7,8,9,NA,NA,11,12,NA)
w <- c(NA,2,NA,NA,4,5,NA,NA,7,8,9,NA,NA,11,12, 12)
mydata <- data.frame(id, time, x, y, z, w)

我尝试过以下方法:

library(dplyr)
mydata.imp <- mydata %>% group_by(id,time) %>% filter(n()>1)

但是这最终给了我0个观察值,因为我在我的数据帧中应该有id a,b,c,当我下降一年的条件时(和a,b只有2年条件)。

对于一年的条件,我的预期数据框如下:

id <- c('a','b','c','a','b','c','a','b','c','a','b','c')
time <- c(2000,2000,2000,2001,2001,2001,2002,2002,2002,2003,2003,2003)
x <- c(1,2,NA,4,5,NA,7,8,9,10,11,12)
y <- c(NA,2,NA,4,5,NA,7,8,9,10,11,12)
z <- c(NA,2,NA,4,5,NA,7,8,9,NA,11,12)
w <- c(NA,2,NA,4,5,NA,7,8,9,NA,11,12)
mydata.imp <- data.frame(id, time, x, y, z, w)

任何帮助都非常感谢。谢谢!

答案

对于此特定示例,以下工作。

mydata %>% 
  mutate(handle = rowSums(.[, 3:6])) %>% 
  group_by(id) %>% 
  mutate(test = sum(!is.na(handle))) %>%
  filter(test > 0) %>%
  select(-test, - handle)

   id     time     x     y     z     w
   <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 a      2000     1    NA    NA    NA
 2 b      2000     2     2     2     2
 3 c      2000    NA    NA    NA    NA
 4 a      2001     4     4     4     4
 5 b      2001     5     5     5     5
 6 c      2001    NA    NA    NA    NA
 7 a      2002     7     7     7     7
 8 b      2002     8     8     8     8
 9 c      2002     9     9     9     9
10 a      2003    10    10    NA    NA
11 b      2003    11    11    11    11
12 c      2003    12    12    12    12

但请注意,我所做的只是考虑所有变量“填充”的ids,而不是计算每个id出现的完整信息的年数。

如果您希望它放置一个优先级变量,即检查单个变量或变量的子集是否至少有2年的信息,只需将mutate(handle = rowSums(.[, 3:6]))更改为mutate(handle = rowSums(.[, "position of the variables"]))

以上是关于如果变量仅填充一年,如何删除ID?的主要内容,如果未能解决你的问题,请参考以下文章

在一些片段之间填充对象变量的最佳方法

Android Place自动填充片段:无法设置文字

URL 中的 PHP/MySQL 变量 - 文本被删除,数字部分仅用于选择数据库记录

如何在片段中填充列表视图?

范围自动填充一行,最好只使用变量

javascript [删除元素,如果存在另一个元素]这个片段将找到id / class,如果它有任何内容(aka。children),那么它将remo