我是R的新手,我正在尝试根据列中的数据引入一个组列.
data.frame的示例
1 11.3178501 4 9 11.618880
2 10.3969713 20 8 11.047486
8 9.5067421 14 7 10.079806
6 6.6135932 6 6 7.002669
4 5.4157174 2 5 5.566232
17 3.8860793 5 4 4.235564
16 3.8183699 15 3 4.406416
11 1.2574765 18 2 1.885113
15 0.7084411 7 1 1.130990
Run Code Online (Sandbox Code Playgroud)
第一列是R引入的索引,但我排序所以顺序不同,我要做的是引入一个列,根据最后一列值定义每行所属的括号.因此,如果最后一列值介于0-5 => 1, 5-0 => 2等,那么我们在最后添加一个新列group -> 1,2,3...
16 3.8183699 15 3 4.406416 1
11 1.2574765 18 2 1.885113 2
15 0.7084411 7 1 1.130990 2
Run Code Online (Sandbox Code Playgroud)
我尝试了以下dataFrame$column4 < 5但是这给了我一个布尔值,所以我想我会把它乘以1然后我得到了以下
0 0 0 0 0 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
我不确定我是否走在正确的轨道上.
即使你发表评论,我仍然会建议cut.它在基础R中,通常不被认为是一种奇特的功能.
df <- structure(list(V1 = c(1L, 2L, 8L, 6L, 4L, 17L, 16L, 11L, 15L),
V2 = c(11.3178501, 10.3969713, 9.5067421, 6.6135932, 5.4157174,
3.8860793, 3.8183699, 1.2574765, 0.7084411), V3 = c(4L, 20L,
14L, 6L, 2L, 5L, 15L, 18L, 7L), V4 = c(9L, 8L, 7L, 6L, 5L,
4L, 3L, 2L, 1L), V5 = c(11.61888, 11.047486, 10.079806, 7.002669,
5.566232, 4.235564, 4.406416, 1.885113, 1.13099)), .Names = c("V1",
"V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA,
-9L))
df$groups <- cut(df$V5, seq(0,15, by=5))
> df
V1 V2 V3 V4 V5 groups
1 1 11.3178501 4 9 11.618880 (10,15]
2 2 10.3969713 20 8 11.047486 (10,15]
3 8 9.5067421 14 7 10.079806 (10,15]
4 6 6.6135932 6 6 7.002669 (5,10]
5 4 5.4157174 2 5 5.566232 (5,10]
6 17 3.8860793 5 4 4.235564 (0,5]
7 16 3.8183699 15 3 4.406416 (0,5]
8 11 1.2574765 18 2 1.885113 (0,5]
9 15 0.7084411 7 1 1.130990 (0,5]
>
Run Code Online (Sandbox Code Playgroud)
最后,如果整数是你想要的,你可以强制groups使用整数factor.
df$groups <- as.integer(df$groups)
> as.integer(df$groups)
[1] 3 3 3 2 2 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2198 次 |
| 最近记录: |