在R中创建条件新变量

泄漏

我需要重新创建非常大的数据框(900多个变量)的原始变量。这是我要执行的操作的一个示例:

dat <- data.frame(
    id=c('user1','user2','user3'),
    agePanel1=c(20,25,32),
    agePanel2=c(21,NA,33),
    favColPanel1=c('blue','red','blue'),
    favColPanel2=c('red',NA,'red')
    )

     id      agePanel1 agePanel2 favColPanel1 favColPanel2
  1 user1        20        21         blue          red
  2 user2        25        NA          red           NA
  3 user3        32        33         blue          red

对于每个变量,我需要创建一个新变量(下面的年龄和favCol),该变量在有面板数据时为NA,否则为第一次面板观察。如果面板数据不完整,则所有面板值均应设置为NA。该示例的结果如下所示:

        id    age  agePanel1 agePanel2 favCol favColPanel1 favColPanel2
    1 user1    NA      20        21      NA        blue          red           
    2 user2    25      NA        NA     red         NA            NA         
    3 user3    NA      32        33      NA        blue          red     

我开始尝试使用dplyr和tidyr:

mutate(dat, age = ifelse(is.na(test$agePanel2),agePanel1,NA))

我正在努力寻找一种方法来执行循环或使该过程自动化的方法。

阴影

这不是您最初问题的最直接解决方案。但是在我看来,长期获取数据是可取的。这样,您想要执行的操作(以及大多数其他操作)就会容易得多。

# required packages
require(dplyr)
require(tidyr)
# get data in long format
dat_long <- dat %>% 
  gather(key, value, -id) %>% 
  separate(key, c("key", "panel"), sep = "Panel") %>%
  spread(key, value, convert = TRUE) %>% 
  arrange(id, panel) %>%
  group_by(id)
dat_long
## Source: local data frame [6 x 4]
## Groups: id
## 
##      id panel age favCol
## 1 user1     1  20   blue
## 2 user1     2  21    red
## 3 user2     1  25    red
## 4 user2     2  NA     NA
## 5 user3     1  32   blue
## 6 user3     2  33    red

# functon that does desired operation
panel_fct <- function(x){
  ifelse(is.na(x[2]), x[1], as(NA, class(x)))
}
# use mutate_each to do desired operation
dat_long %>% summarise_each(funs(panel_fct), -panel)
## Source: local data frame [3 x 3]
##
##      id age favCol
## 1 user1  NA     NA
## 2 user2  25    red
## 3 user3  NA     NA

当然,您可以将最终结果合并回原始数据,但是对于大多数操作而言,最好使用长数据。

dat_long %>% summarise_each(funs(panel_fct), -panel) %>% left_join(dat, by = "id")
## Source: local data frame [3 x 7]
## 
##      id age favCol agePanel1 agePanel2 favColPanel1 favColPanel2
## 1 user1  NA     NA        20        21         blue          red
## 2 user2  25    red        25        NA          red           NA
## 3 user3  NA     NA        32        33         blue          red

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建基于R中的条件重置的新变量

来自分类Dev

根据R中的条件总结和创建新变量

来自分类Dev

在R中:如何根据现有变量的条件创建新变量

来自分类Dev

如何使用dplyr在r中的不同条件下的不同组中创建新变量

来自分类常见问题

如何在R中其他条件下创建新变量

来自分类Dev

ifelse具有在data.table R中创建新变量的多个条件

来自分类Dev

在R中创建一个包含条件行和的新变量

来自分类Dev

如何在R中只有一个变量的条件下创建新矩阵?

来自分类Dev

如何在R中其他条件下创建新变量

来自分类Dev

在R中运行迭代以创建具有特定条件的新变量

来自分类Dev

使用ifelse在r中创建新变量并更改因变量

来自分类Dev

在R中,使用dplyr的mutate()创建一个以另一个内容为条件的新变量

来自分类Dev

基于多个条件的data.table R中的新变量

来自分类Dev

R:根据其他名称相似的变量的选择条件创建多个新变量

来自分类Dev

如何基于R中的条件创建新列

来自分类Dev

如何基于R中的多个条件创建新的数据集?

来自分类Dev

如何基于R中的多个条件创建新列?

来自分类Dev

基于R中的多个条件语句创建新列

来自分类Dev

如何基于R中的条件创建新列

来自分类Dev

根据列R中的部分匹配来创建新变量

来自分类Dev

在R中创建新变量(布尔值)

来自分类Dev

无法根据R中的均值创建新变量

来自分类Dev

为 R 中的每组观察创建新变量

来自分类Dev

根据其他变量的条件在数据表中创建新变量

来自分类Dev

使用条件从数据框中的现有变量创建一个新变量

来自分类Dev

使用不同数据框中的另一个变量的条件创建新变量

来自分类Dev

在SAS中创建新变量

来自分类Dev

在 r 中创建变量

来自分类Dev

从 R 中具有相同 ID 的行创建新变量(在新列中但不创建新列)

Related 相关文章

  1. 1

    如何创建基于R中的条件重置的新变量

  2. 2

    根据R中的条件总结和创建新变量

  3. 3

    在R中:如何根据现有变量的条件创建新变量

  4. 4

    如何使用dplyr在r中的不同条件下的不同组中创建新变量

  5. 5

    如何在R中其他条件下创建新变量

  6. 6

    ifelse具有在data.table R中创建新变量的多个条件

  7. 7

    在R中创建一个包含条件行和的新变量

  8. 8

    如何在R中只有一个变量的条件下创建新矩阵?

  9. 9

    如何在R中其他条件下创建新变量

  10. 10

    在R中运行迭代以创建具有特定条件的新变量

  11. 11

    使用ifelse在r中创建新变量并更改因变量

  12. 12

    在R中,使用dplyr的mutate()创建一个以另一个内容为条件的新变量

  13. 13

    基于多个条件的data.table R中的新变量

  14. 14

    R:根据其他名称相似的变量的选择条件创建多个新变量

  15. 15

    如何基于R中的条件创建新列

  16. 16

    如何基于R中的多个条件创建新的数据集?

  17. 17

    如何基于R中的多个条件创建新列?

  18. 18

    基于R中的多个条件语句创建新列

  19. 19

    如何基于R中的条件创建新列

  20. 20

    根据列R中的部分匹配来创建新变量

  21. 21

    在R中创建新变量(布尔值)

  22. 22

    无法根据R中的均值创建新变量

  23. 23

    为 R 中的每组观察创建新变量

  24. 24

    根据其他变量的条件在数据表中创建新变量

  25. 25

    使用条件从数据框中的现有变量创建一个新变量

  26. 26

    使用不同数据框中的另一个变量的条件创建新变量

  27. 27

    在SAS中创建新变量

  28. 28

    在 r 中创建变量

  29. 29

    从 R 中具有相同 ID 的行创建新变量(在新列中但不创建新列)

热门标签

归档