我正在努力將我的資料幀分成 2 個或更多部分。我有很多列和行,但想象一個玩具示例:
test = data.frame(car = c("A", "A", "B", "C", "D", "E", "B", "C", "D"), value = c(5,4,3,5, 6, 6, 7 ,8 ,10))
#result
# car value group
#1 A 5 1
#2 A 4 1
#3 B 3 2
#4 C 5 1
#5 D 6 2
#6 E 6 2
#7 B 7 2
#8 C 8 1
#9 D 10 2
我需要的唯一限制是:同一輛車不能屬于同一類別,即同一輛車,例如 car A,它將出現在我真實資料幀的幾行中。每次發生時,必須有相同的對應類別,例如group = 1。同一個組會有幾輛不同的車,但同一輛車永遠不會在不同的組中。
任何提示?我試過 test %>% mutate(group = ntile(car, 4))沒有成功。
uj5u.com熱心網友回復:
gr <- function(df, groups){
g <- as.integer(factor(df[[1]])) %% groups
df$groups <- as.integer(factor(g))
df
}
gr(test, 1)
car value groups
1 A 5 1
2 A 4 1
3 B 3 1
4 C 5 1
5 D 6 1
gr(test, 2)
car value groups
1 A 5 2
2 A 4 2
3 B 3 1
4 C 5 2
5 D 6 1
gr(test, 3)
car value groups
1 A 5 2
2 A 4 2
3 B 3 3
4 C 5 1
5 D 6 2
gr(test, 4)
car value groups
1 A 5 2
2 A 4 2
3 B 3 3
4 C 5 4
5 D 6 1
uj5u.com熱心網友回復:
使用dplyr方法:
library(dplyr)
test = data.frame(car = c("A", "A", "B", "C", "D", "E", "B", "C", "D"), value = c(5,4,3,5, 6, 6, 7 ,8 ,10))
test %>%
mutate(group = 1 match(car,car) %% 4)
#> car value group
#> 1 A 5 2
#> 2 A 4 2
#> 3 B 3 4
#> 4 C 5 1
#> 5 D 6 2
#> 6 E 6 3
#> 7 B 7 4
#> 8 C 8 1
#> 9 D 10 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/358116.html
