R 如何通过分组和筛选将行分散到列?
我有一个类似这样的数据集:R 如何通过分组和筛选将行分散到列?,r,dplyr,R,Dplyr,我有一个类似这样的数据集: df_1 <- tribble( ~id, ~type, ~min_price, ~max_price, "1", "X", 10, 40, "1", "Y", 20, 50, "2", "X", 18, 40, "2", "Y", 34,
df_1 <- tribble(
~id, ~type, ~min_price, ~max_price,
"1", "X", 10, 40,
"1", "Y", 20, 50,
"2", "X", 18, 40,
"2", "Y", 34, 50,
"2", NA, 15, 70,
"3", "X", 40, 90,
"3", "Y", 23, 100,
)
df_1我们可以使用pivot_更宽
,它可以获取多个值
列
tidyr::pivot_wider(df_1, names_from = type, values_from = c(min_price, max_price))
# A tibble: 3 x 7
# id min_price_X min_price_Y min_price_NA max_price_X max_price_Y max_price_NA
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 10 20 NA 40 50 NA
#2 2 18 34 15 40 50 70
#3 3 40 23 NA 90 100 NA
tidyr::pivot\u更宽(df\u 1,name\u from=type,value\u from=c(最小价格,最大价格))
#一个tibble:3x7
#id最小价格X最小价格Y最小价格N最大价格X最大价格Y最大价格N
#
#111020NA 4050NA
#2 2 18 34 15 40 50 70
#3 3 40 23 NA 90 100 NA
我们可以更广泛地使用pivot\u
,它可以获取多个值
列
tidyr::pivot_wider(df_1, names_from = type, values_from = c(min_price, max_price))
# A tibble: 3 x 7
# id min_price_X min_price_Y min_price_NA max_price_X max_price_Y max_price_NA
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 10 20 NA 40 50 NA
#2 2 18 34 15 40 50 70
#3 3 40 23 NA 90 100 NA
tidyr::pivot\u更宽(df\u 1,name\u from=type,value\u from=c(最小价格,最大价格))
#一个tibble:3x7
#id最小价格X最小价格Y最小价格N最大价格X最大价格Y最大价格N
#
#111020NA 4050NA
#2 2 18 34 15 40 50 70
#3 3 40 23 NA 90 100 NA
您可以尝试以下方法:
library("reshape2")
dcast(melt(df_1, id.vars = c("id", "type")), id ~ variable + type)
结果将是:
id min_price_X min_price_Y min_price_NA max_price_X max_price_Y max_price_NA
1 1 10 20 NA 40 50 NA
2 2 18 34 15 40 50 70
3 3 40 23 NA 90 100 NA
您可以尝试以下方法:
library("reshape2")
dcast(melt(df_1, id.vars = c("id", "type")), id ~ variable + type)
结果将是:
id min_price_X min_price_Y min_price_NA max_price_X max_price_Y max_price_NA
1 1 10 20 NA 40 50 NA
2 2 18 34 15 40 50 70
3 3 40 23 NA 90 100 NA