2017-08-12 138 views
0

我似乎无法找到与我的特定问题相关的任何内容,所以我在此处询问。 我有我原来的数据帧在这里:将行单元格值转换为R中的单列

Sample#, Fert_A_Mean, Fert_B_Mean, Fert_C_Mean, Fert_D_Mean 
1  987,   384,   672,   364 
2  567,   845,   398,   243 

而且我希望能够重组这样的:

Sample#, Fert_Mean 
1  987 
1  384 
1  672 
1  364 
2  567 
2  845 
2  398 
2  243 

我发现对堆栈交换一些类似的主题,such as here

但在这种情况下使用't()'似乎不起作用......或者我做错了什么。希望你们中的一位可以帮助我。非常感谢。使用R 3.4.1到R-studio。你为你的方法推荐的任何软件包都很好。

回答

0

您可以使用类似gathertidyr包:

library(tidyr) 
df2 <- gather(df, key=Fert_Mean, value=value, -Sample) 

df2 
    Sample Fert_Mean value 
1  1 Fert_A_Mean 987 
2  2 Fert_A_Mean 567 
3  1 Fert_B_Mean 384 
4  2 Fert_B_Mean 845 
5  1 Fert_C_Mean 672 
6  2 Fert_C_Mean 398 
7  1 Fert_D_Mean 364 
8  2 Fert_D_Mean 243 

您可以通过Sample去除Fert_Mean列,如果你不想要它,和排序,以获得您的示例中的顺序。

+1

嘿安德鲁感谢 - 它绝对是非常接近...比我经过相当多的工作后来得更近!有没有一种方法可以按照上面的示例按照排序的方式输出它?谢谢这么多人 – Alexander

+0

'df2 < - df2 [order(df2 $ Sample,df2 $ Fert_Mean)]'会按照'Sample'和Fert_Mean'的顺序排序,我认为这是您想要的顺序。 –

+0

非常感谢你 - 你为我节省了一堆时间。这种功能绝对有用 – Alexander

相关问题