根据在r中包含特定值的其他变量创建一个新变量

我有几个时间严重的变量,我想创建两个新的虚拟变量。变量一:如果其他变量包含特定值,则变量1等于1。变量二:如果其他变量连续包含特定值,则变量2等于1。

我的数据看起来像

ID score_2011 score_2012 score_2013 score_2014 score_2015
1          12         15         96         96         16
2          12         15         15         15         16
3          12         96         20         15         16
4          12         15         18         15         16
5          12         15         96         15         16

我想获得新的变量,如下所示

IF score_2011~2015 contain 96 then with_96=1
IF score_2011~2015 contain continuous 96 then back_to_back_96=1 

我希望结果看起来像..

  ID    score_2011 score_2012 score_2013  score_2014  score_2015  with_96  back_to_back_96
    1          12         15         96         96         16       1               1
    2          12         15         15         15         16       0               0
    3          12         96         20         15         16       1               0
    4          12         15         18         15         16       0               0
    5          96         15         96         15         16       1               0

提前致谢

阿克伦

一个办法是遍历行,寻找是否有any是96的值(“X1”),请运行长度编码每个行,检查是否存在anylengths对“真”的值大于1('x2'),将两者连接,转置并为输出分配两个新列。

df1[c("with_96", "back_to_back_96")] <- t(apply(df1[-1], 1, FUN= function(x) {
          x1 <- as.integer(any(x==96))
          rl <- rle(x==96)
          x2 <- any(rl$lengths[rl$values]>1)
          c(x1, x2)}))
df1
#  ID score_2011 score_2012 score_2013 score_2014 score_2015 with_96 back_to_back_96
#1  1         12         15         96         96         16       1               1
#2  2         12         15         15         15         16       0               0
#3  3         12         96         20         15         16       1               0
#4  4         12         15         18         15         16       0               0
#5  5         12         15         96         15         16       1               0

或另一种选择是使用 rowSums

df1["with_96"] <- +(!!rowSums(df1[-1]==96))
df1["back_to_back_96"] <-  rowSums((df1[-c(1, ncol(df1))]==96)  + 
                 (df1[-c(1,2)]==96)>1)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据在r中包含特定值的其他变量创建一个新变量

来自分类Dev

根据组中其他列中至少一个变量的出现创建新列

来自分类Dev

如何创建一个包含基于其他选定变量的值的三个计算的新变量

来自分类Dev

根据其他两个变量在数据框中创建一个新变量

来自分类Dev

根据其他列R中的不同值创建一个新列R

来自分类Dev

根据R中其他两个变量之间的数值差异创建新变量

来自分类Dev

在R中如何创建一个变量,其内容基于其他变量中的内容?

来自分类Dev

根据其他几个变量的值创建新变量

来自分类Dev

R-创建一个新变量,其中每个观察值都依赖于另一个表和数据框中的其他变量

来自分类Dev

根据其他两个变量的值创建变量

来自分类Dev

Python groupby - 根据其他列中的值创建一个新列

来自分类Dev

根据其他两列中的条件在R中创建一个新列

来自分类Dev

如何根据r中另一个变量的变化创建一个新变量

来自分类Dev

根据可能存在于多个其他变量中的值创建新的Stata变量

来自分类Dev

如何从其他两列中的值创建一个因子变量

来自分类Dev

如何创建一个新变量来标识其他变量更改符号的行?

来自分类Dev

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

来自分类Dev

使用R根据其他列创建新变量

来自分类Dev

R:如何根据其他列的名称创建新变量

来自分类Dev

使用R根据其他列创建新变量

来自分类Dev

查找一个变量的范围以获取其他变量的特定值

来自分类Dev

如何使用dplyr创建一个新变量,该变量是其他两个变量的并集?

来自分类Dev

根据其他列行中的过滤值,在pandas数据框中创建一个新列

来自分类Dev

根据R中的其他两列创建一个新的分类“比较检测”列(九个选项答案)

来自分类Dev

使用sum(x:y)从R中的现有值创建一个新变量/向量

来自分类Dev

根据其他列名称和值创建一个新列

来自分类Dev

如何根据R中另一个变量的匹配值替换变量中的值?

来自分类Dev

在 R 中按组比较一个变量与其他变量

来自分类Dev

根据观察的模态数量创建一个新变量

Related 相关文章

  1. 1

    根据在r中包含特定值的其他变量创建一个新变量

  2. 2

    根据组中其他列中至少一个变量的出现创建新列

  3. 3

    如何创建一个包含基于其他选定变量的值的三个计算的新变量

  4. 4

    根据其他两个变量在数据框中创建一个新变量

  5. 5

    根据其他列R中的不同值创建一个新列R

  6. 6

    根据R中其他两个变量之间的数值差异创建新变量

  7. 7

    在R中如何创建一个变量,其内容基于其他变量中的内容?

  8. 8

    根据其他几个变量的值创建新变量

  9. 9

    R-创建一个新变量,其中每个观察值都依赖于另一个表和数据框中的其他变量

  10. 10

    根据其他两个变量的值创建变量

  11. 11

    Python groupby - 根据其他列中的值创建一个新列

  12. 12

    根据其他两列中的条件在R中创建一个新列

  13. 13

    如何根据r中另一个变量的变化创建一个新变量

  14. 14

    根据可能存在于多个其他变量中的值创建新的Stata变量

  15. 15

    如何从其他两列中的值创建一个因子变量

  16. 16

    如何创建一个新变量来标识其他变量更改符号的行?

  17. 17

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

  18. 18

    使用R根据其他列创建新变量

  19. 19

    R:如何根据其他列的名称创建新变量

  20. 20

    使用R根据其他列创建新变量

  21. 21

    查找一个变量的范围以获取其他变量的特定值

  22. 22

    如何使用dplyr创建一个新变量,该变量是其他两个变量的并集?

  23. 23

    根据其他列行中的过滤值,在pandas数据框中创建一个新列

  24. 24

    根据R中的其他两列创建一个新的分类“比较检测”列(九个选项答案)

  25. 25

    使用sum(x:y)从R中的现有值创建一个新变量/向量

  26. 26

    根据其他列名称和值创建一个新列

  27. 27

    如何根据R中另一个变量的匹配值替换变量中的值?

  28. 28

    在 R 中按组比较一个变量与其他变量

  29. 29

    根据观察的模态数量创建一个新变量

热门标签

归档