我有这样的数据集:
case x y
1 4 5
2 4 5
3 8 9
4 7 9
5 6 3
6 6 3
我想创建一个分组变量。 当x和y都相同时,此变量应具有相同的值。 我不在乎这个价值是什么,而是将它们分组。因为在我的数据集中,如果两个案例的x和y相同,则它们可能是同一组织的一部分。我想看看有哪些组织。
所以我的首选数据集如下所示:
case x y org
1 4 5 1
2 4 5 1
3 8 9 2
4 7 9 3
5 6 3 4
6 6 3 4
我如何在R中编程?
答案 0 :(得分:2)
如你所说, 我不在乎这个价值是什么 ,你可以这样做
dt$new=as.numeric(as.factor(paste(dt$x,dt$y)))
dt
case x y new
1 1 4 5 1
2 2 4 5 1
3 3 8 9 4
4 4 7 9 3
5 5 6 3 2
6 6 6 3 2
答案 1 :(得分:1)
to testme
let mylist (list 2 4 6 8)
print mylist
type "first item is " print first mylist
let myvalue first mylist
type "myvalue is " print myvalue
end
使用dplyr
的解决方案。
group_indices
如果群组编号需要整齐,我们可以在创建library(dplyr)
dt2 <- dt %>%
mutate(org = group_indices(., x, y))
dt2
case x y org
1 1 4 5 1
2 2 4 5 1
3 3 8 9 4
4 4 7 9 3
5 5 6 3 2
6 6 6 3 2
列后使用rleid
包中的data.table
,如下所示。
org
<强>更新强>
以下是如何排列library(dplyr)
library(data.table)
dt2 <- dt %>%
mutate(org = group_indices(., x, y)) %>%
mutate(org = rleid(org))
dt2
case x y org
1 1 4 5 1
2 2 4 5 1
3 3 8 9 2
4 4 7 9 3
5 5 6 3 4
6 6 6 3 4
中的列。
dplyr
我们也可以针对多个列执行此操作,例如library(dplyr)
dt %>%
arrange(x)
case x y
1 1 4 5
2 2 4 5
3 5 6 3
4 6 6 3
5 4 7 9
6 3 8 9
或使用arrange(x, y)
来反转oder,例如desc
。
数据强>
arrange(desc(x))