对多个值使用价差
Using spread for more than one value
我正在用 R 编写代码,在重塑我的数据模型时遇到了一个小问题。这是我的数据 table 类似于:
data sample
name job company number
John Product Manager Google 1
Sam software developer Microsoft 1
Sam Product Manager Microsoft 2
Matt hr director Chevron 1
Cassy Head of Investments Apple 1
Cassy CEO JP Morgan 2
Cassy CFO Amazon 3
这就是我试图让我的数据看起来像:
name job_1 company_1 job_2 company_2 job_3 company_3
John Product Manager Google
Sam software developer Microsoft Product Manager Microsoft
Matt hr director Chevron
Cassy Head of Investments Apple CEO JP Morgan CFO Amazon
Cassy CFO Amazon
我尝试使用 spread() 但它不允许我在 value = 部分中放置更多的变量,而且我无法将这些值连接成一个字符串并使用 sep() 因为实际的数据文件需要几个运行 天。有什么办法吗?
spread
已替换为 pivot_wider
,您可以在其中传递多个值列。
tidyr::pivot_wider(df, names_from = number, values_from = c(job, company))
# A tibble: 4 x 7
# name job_1 job_2 job_3 company_1 company_2 company_3
# <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 John Product_Manager NA NA Google NA NA
#2 Sam software_developer Product_Manager NA Microsoft Microsoft NA
#3 Matt hr_director NA NA Chevron NA NA
#4 Cassy Head_of_Investments CEO CFO Apple JP_Morgan Amazon
您也可以使用 data.table
dcast
library(data.table)
dcast(setDT(df), name~number, value.var = c("job", "company"))
我正在用 R 编写代码,在重塑我的数据模型时遇到了一个小问题。这是我的数据 table 类似于:
data sample
name job company number
John Product Manager Google 1
Sam software developer Microsoft 1
Sam Product Manager Microsoft 2
Matt hr director Chevron 1
Cassy Head of Investments Apple 1
Cassy CEO JP Morgan 2
Cassy CFO Amazon 3
这就是我试图让我的数据看起来像:
name job_1 company_1 job_2 company_2 job_3 company_3
John Product Manager Google
Sam software developer Microsoft Product Manager Microsoft
Matt hr director Chevron
Cassy Head of Investments Apple CEO JP Morgan CFO Amazon
Cassy CFO Amazon
我尝试使用 spread() 但它不允许我在 value = 部分中放置更多的变量,而且我无法将这些值连接成一个字符串并使用 sep() 因为实际的数据文件需要几个运行 天。有什么办法吗?
spread
已替换为 pivot_wider
,您可以在其中传递多个值列。
tidyr::pivot_wider(df, names_from = number, values_from = c(job, company))
# A tibble: 4 x 7
# name job_1 job_2 job_3 company_1 company_2 company_3
# <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 John Product_Manager NA NA Google NA NA
#2 Sam software_developer Product_Manager NA Microsoft Microsoft NA
#3 Matt hr_director NA NA Chevron NA NA
#4 Cassy Head_of_Investments CEO CFO Apple JP_Morgan Amazon
您也可以使用 data.table
dcast
library(data.table)
dcast(setDT(df), name~number, value.var = c("job", "company"))