根据 R 中的单个 ID 对值行进行分组
Group row of values based on a single ID in R
嗨,我有一个这样的数据框:
> dput(tst_df)
structure(list(Item = c("a", "a", "a", "a", "a", "b", "b", "b",
"b", "b"), sku = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L), .Label = c("HOU394386-411", "HOU454800-463"), class = "factor"),
ean = structure(1:10, .Label = c("8718476625642", "8718476625659",
"8718476625666", "8718476625673", "8718476625680", "8718476630066",
"8718476630073", "8718476630080", "8718476630097", "8718476630103"
), class = "factor")), .Names = c("Item", "sku", "ean"), row.names = c(NA,
-10L), class = "data.frame")
我想要的是在列 sku 上分组,sku 旁边应该是属于该 SKU 的 eans。
示例:
第 1 行:
HOU394386-411 8718476625642 8718476625659 8718476625666 8718476625673 8718476625680
第 2 行:
HOU454800-463 8718476630066 8718476630073 8718476630080 8718476630097 8718476630103
如果我尝试使用 group_by 实现此目的并从 dplyr 包或使用 reshapes 函数转换进行总结,我没有得到我想要的。所有 EANS 都变成列,我只想要属于某个 SKU 的 EAN。这甚至可能吗?
你可以试试
library(tidyverse)
d %>%
group_by(sku) %>%
mutate(n=1:n()) %>%
select(-Item) %>%
ungroup() %>%
spread(n, ean)
# A tibble: 2 x 6
sku `1` `2` `3` `4` `5`
<fct> <fct> <fct> <fct> <fct> <fct>
1 HOU394386-411 8718476625642 8718476625659 8718476625666 8718476625673 8718476625680
2 HOU454800-463 8718476630066 8718476630073 8718476630080 8718476630097 8718476630103
嗨,我有一个这样的数据框:
> dput(tst_df)
structure(list(Item = c("a", "a", "a", "a", "a", "b", "b", "b",
"b", "b"), sku = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L), .Label = c("HOU394386-411", "HOU454800-463"), class = "factor"),
ean = structure(1:10, .Label = c("8718476625642", "8718476625659",
"8718476625666", "8718476625673", "8718476625680", "8718476630066",
"8718476630073", "8718476630080", "8718476630097", "8718476630103"
), class = "factor")), .Names = c("Item", "sku", "ean"), row.names = c(NA,
-10L), class = "data.frame")
我想要的是在列 sku 上分组,sku 旁边应该是属于该 SKU 的 eans。
示例:
第 1 行:
HOU394386-411 8718476625642 8718476625659 8718476625666 8718476625673 8718476625680
第 2 行:
HOU454800-463 8718476630066 8718476630073 8718476630080 8718476630097 8718476630103
如果我尝试使用 group_by 实现此目的并从 dplyr 包或使用 reshapes 函数转换进行总结,我没有得到我想要的。所有 EANS 都变成列,我只想要属于某个 SKU 的 EAN。这甚至可能吗?
你可以试试
library(tidyverse)
d %>%
group_by(sku) %>%
mutate(n=1:n()) %>%
select(-Item) %>%
ungroup() %>%
spread(n, ean)
# A tibble: 2 x 6
sku `1` `2` `3` `4` `5`
<fct> <fct> <fct> <fct> <fct> <fct>
1 HOU394386-411 8718476625642 8718476625659 8718476625666 8718476625673 8718476625680
2 HOU454800-463 8718476630066 8718476630073 8718476630080 8718476630097 8718476630103