R 宽到长多列问题
我有这样的想法:R 宽到长多列问题,r,reshape,long-integer,tidyr,melt,R,Reshape,Long Integer,Tidyr,Melt,我有这样的想法: id role1 Approved by Role1 role2 Approved by Role2 1 Amy 1/1/2019 David 4/4/2019 2 Bob 2/2/2019 Sara 5/5/2019 3 Adam 3/3/2019 Rachel
id role1 Approved by Role1 role2 Approved by Role2
1 Amy 1/1/2019 David 4/4/2019
2 Bob 2/2/2019 Sara 5/5/2019
3 Adam 3/3/2019 Rachel 6/6/2019
id Name Role Approved
1 Amy role1 1/1/2019
2 Bob role1 2/2/2019
3 Adam role1 3/3/2019
1 David role2 4/4/2019
2 Sara role2 5/5/2019
3 Rachel role2 6/6/2019
我想要这样的东西:
id role1 Approved by Role1 role2 Approved by Role2
1 Amy 1/1/2019 David 4/4/2019
2 Bob 2/2/2019 Sara 5/5/2019
3 Adam 3/3/2019 Rachel 6/6/2019
id Name Role Approved
1 Amy role1 1/1/2019
2 Bob role1 2/2/2019
3 Adam role1 3/3/2019
1 David role2 4/4/2019
2 Sara role2 5/5/2019
3 Rachel role2 6/6/2019
我以为这样会管用
melt(df,id.vars= id,
measure.vars= list(c("role1", "role2"),c("Approved by Role1", "Approved by Role2")),
variable.name= c("Role","Approved"),
value.name= c("Name","Date"))
但我得到了一个错误:在数据中找不到度量变量:c(“role1”,“role2”),c(“role1批准”,“role2批准”)
我也尝试过用列数来替换这个,但并没有任何运气
有什么建议吗??谢谢 我非常喜欢新的
tidyr::pivot\u longer()
函数。它仍然只在开发版本的tidyr
中可用,但应该很快发布。首先,我将稍微清理一下列名,使它们具有一致的结构:
> df
# A tibble: 3 x 5
id name_role1 approved_role1 name_role2 approved_role2
<dbl> <chr> <chr> <chr> <chr>
1 1 Amy 1/1/2019 David 4/4/2019
2 2 Bob 2/2/2019 Sara 5/5/2019
3 3 Adam 3/3/2019 Rachel 6/6/2019
输出:
id role name approved
<dbl> <chr> <chr> <chr>
1 1 role1 Amy 1/1/2019
2 1 role2 David 4/4/2019
3 2 role1 Bob 2/2/2019
4 2 role2 Sara 5/5/2019
5 3 role1 Adam 3/3/2019
6 3 role2 Rachel 6/6/2019
id角色名称已批准
1 1角色1艾米1/1/2019
2 1角色2大卫2019年4月4日
3 2角色1 2019年2月2日鲍勃
4 2 role2 Sara 2019年5月5日
5 3角色1亚当2019年3月3日
6 3角色2雷切尔2019年6月6日
您在c(“role1”、“role2”)中缺少一个结束引号
很抱歉,这是我的错误输入,已更正可能的重复。有没有办法在开发版本中不这样做?也许,tidyr()的发布版本有gather()
用于转换为长格式,但它没有那么灵活,我不确定它是否可以处理这里的结构。