我有以下数据集:
Col_1 <- c(1:25)
Col_2 <- c(1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 7, 7, 7, 8, 8, 9, 9, 9, 9)
df <- cbind(Col_1, Col_2)
> df
Col_1 Col_2
[1,] 1 1
[2,] 2 1
[3,] 3 1
[4,] 4 2
[5,] 5 2
[6,] 6 3
[7,] 7 3
[8,] 8 3
[9,] 9 3
[10,] 10 3
[11,] 11 4
[12,] 12 4
[13,] 13 4
[14,] 14 5
[15,] 15 5
[16,] 16 6
[17,] 17 7
[18,] 18 7
[19,] 19 7
[20,] 20 8
[21,] 21 8
[22,] 22 9
[23,] 23 9
[24,] 24 9
[25,] 25 9
我想创建一个新列,如果'Col_2'中的值小于3的倍数,则将As分配给新列(Col_3
),如果Col_2中的值小于1则将B赋给3的倍数,如果Col_3中的值是3的倍数,则为Cs。结果数据集应如下所示:
> df
Col_1 Col_2 Col_3
[1,] 1 1 A
[2,] 2 1 A
[3,] 3 1 A
[4,] 4 2 B
[5,] 5 2 B
[6,] 6 3 C
[7,] 7 3 C
[8,] 8 3 C
[9,] 9 3 C
[10,] 10 3 C
[11,] 11 4 A
[12,] 12 4 A
[13,] 13 4 A
[14,] 14 5 B
[15,] 15 5 B
[16,] 16 6 C
[17,] 17 7 A
[18,] 18 7 A
[19,] 19 7 A
[20,] 20 8 B
[21,] 21 8 B
[22,] 22 9 C
[23,] 23 9 C
[24,] 24 9 C
[25,] 25 9 C
什么是最佳解决方案?谢谢!
答案 0 :(得分:4)
我们可以使用%%
创建新列
cbind(df, Col_3 = LETTERS[(df[,2]-1) %% 3 + 1])