R从3列创建表

时间:2016-10-27 20:50:25

标签: r

我在这方面失败了10个方法:

我有一个格式为3列的数据:

H7  200,3   2227649,5
H13 200,3   1084585
H15 200,3   873123,1
Zdrowy  200,3   2245707
Z26 202,7   1742185,9
Zdrowy  202,7   2420348,5
K4  203,5   10251587
Z18 203,5   6904013
H7  203,5   5765803
H13A    203,5   4219047,5
H13 203,5   1791847,1
H15 203,5   1260959,3
K3  203,5   9878843
K5  203,5   3406241
K35 203,5   4746493
K37 203,5   6303874
Z11 203,5   1415927,8
Z16 203,5   6245137,5
Z26 203,5   7330417,5

第1列和第2列确实包含不唯一的值。我需要做的是获得一个矩阵,其中column1作为行名,column2作为列名,column3作为单元格中的相应值。如果值重复(因为列1,2具有一些非唯一值),则单元格值应为平均值。

对此有何帮助?

1 个答案:

答案 0 :(得分:1)

听起来您正在尝试将数据从长格式转换为宽格式。您可以使用包reshape2执行此操作。这是一个小例子:

# Create dummy data
df <- data.frame(col1=sample(c('a','b','c'), 10, replace=T), col2=sample(1:3, 10, replace=T), col3=rnorm(10))
df
   col1 col2       col3
1     b    2  0.1514541
2     c    3 -0.2566596
3     a    3 -0.8939474
4     a    1 -0.2174930
5     a    1 -0.1739861
6     b    1 -0.4525370
7     b    2 -0.5592760
8     b    3  0.5206133
9     a    2 -1.9239337
10    c    2 -0.1581582

# Load the library
library(reshape2)

# Cast the library into wide format
df.long <- dcast(df, col1~col2, fun.aggregate=mean)
df.long
col1          1          2
1    a -0.1957395 -1.9239337
2    b -0.4525370 -0.2039110
3    c        NaN -0.1581582
           3
1 -0.8939474
2  0.5206133
3 -0.2566596

如果第1列和第2列中的某些因子组合不存在值,则会插入NaN。