R - 基于另一列差异创建新列

鹦鹉螺

我有以下数据集:

ID year start_year
a  1    1
a  2    1
a  3    1
b  1    2
b  2    2
b  3    2
c  1    3
c  2    3
c  3    3

我想创建一个新的虚拟列present,对于每个 ID,如果 start_year 为 1,则为 1-1-1,如果 start_year 为 2,则为 0-1-1,如果 start_year 为 3,则为 0-0-1。我的目标是得到下表:

ID year start_year present
a  1    1          1
a  2    1          1
a  3    1          1
b  1    2          0
b  2    2          1
b  3    2          1
c  1    3          0
c  2    3          0
c  3    3          1

我想这对你们大多数人来说应该相当容易,但我真的被困住了。非常感谢您的帮助!

阿克伦

更简单的选择是创建一个键/值list,然后为每个“ID”使用“start_year”元素子集listfirst假设每组只有 3 个元素)

library(dplyr)
lst1 <- list(`1` = c(1, 1, 1), `2` = c(0, 1, 1), `3` = c(0, 0, 1))
df1 %>%
   group_by(ID) %>% 
   mutate(present = lst1[[as.character(first(start_year))]]) %>%
   ungroup

-输出

# A tibble: 9 × 4
  ID     year start_year present
  <chr> <int>      <int>   <dbl>
1 a         1          1       1
2 a         2          1       1
3 a         3          1       1
4 b         1          2       0
5 b         2          2       1
6 b         3          2       1
7 c         1          3       0
8 c         2          3       0
9 c         3          3       1

数据

df1 <- structure(list(ID = c("a", "a", "a", "b", "b", "b", "c", "c", 
"c"), year = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), start_year = c(1L, 
1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L)), class = "data.frame", row.names = c(NA, 
-9L))

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:如何创建一个基于另一列某些值的新列?

R使用函数基于另一列创建新列

在R是/否的基础上基于另一列创建新列

从R中的另一列创建新列

R:新列与另一列最大值之间的差异(按组)

R:基于另一列的分类级别彼此相同还是不同的新列

如何基于R中另一列中的最高编号来计算新列?

基于 < 或 >= R 中另一列的数值创建非数值列

在R中创建另一列

R:for循环创建基于前一列的条件语句填充的新列

根据另一列 R 中的条件创建一个新列

根据r中另一列的观测值创建新列

R根据另一列中的因素创建新列

基于R中另一列的值进行计数

R中基于另一列的组合

R:从基于另一列的行中减去值

创建一个新列,该列采用 R 中另一列的初始值

根据R中的另一列创建类别列

r 创建与按另一列分组的行元素匹配的新数据框

创建一个基于R中的另一列对从一列中提取的字符串文本进行分组的列

R:逐行汇总一列的值并创建新列

创建新列,该列采用另一列值的总和并按 R 中的条件分组

R dplyr基于Fun索引汇总一列值(另一列)

R:基于另一列的值对一列的值进行装箱

在R中使用DT的基于另一列的样式一列

一列基于另一列(R)的值的累积总和

R-基于使用另一列的函数为一列添加值

使用R中的查找表基于另一个df创建新列

根据另一列的内容在R中创建一个新列[特定情况]