Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据集转换为R中的特定方式_R_Dataset - Fatal编程技术网

如何将数据集转换为R中的特定方式

如何将数据集转换为R中的特定方式,r,dataset,R,Dataset,你能帮我做这个吗。我有一个这样的数据集 sample <- matrix(c(1, 'A', 0.17, 1, 'B', 0.80, 1, 'C', 0.10, 1, 'D', 0.35, 2, 'A', 0.44, 2, 'B', 0.24, 2, 'C', 0.

你能帮我做这个吗。我有一个这样的数据集

sample <- matrix(c(1, 'A', 0.17,
                   1, 'B', 0.80,
                   1, 'C', 0.10,
                   1, 'D', 0.35,
                   2, 'A', 0.44,
                   2, 'B', 0.24,
                   2, 'C', 0.39,
                   2, 'D', 0.65,
                   3, 'A', 0.61,
                   3, 'B', 0.94,
                   3, 'C', 0.19,
                   3, 'D', 0.65), nrow=12, ncol=3, byrow=T)

colnames(sample) <- c('year', 'country', 'X')
as.data.frame(sample)
我需要什么技巧来获得如下数据集

year    A     B       C       D
1   0.17    0.80    0.10    0.35
2   0.44    0.24    0.39    0.65
3   0.61    0.94    0.19    0.65


您的代码缺少第一行或第二行,因此我将其重新格式化了一点。下面是一个使用
tidyr
的解决方案:

库(dplyr)
图书馆(tidyr)
df%
枢轴(名称从=国家,值从=X)
#>#tibble:3 x 5
#>A年B年C年D年
#>       
#> 1     1  0.17  0.8   0.1   0.35
#> 2     2  0.44  0.24  0.39  0.65
#> 3     3  0.61  0.94  0.19  0.65

由(v0.3.0)于2020年4月10日创建,您试图完成的任务称为从长到宽重塑数据集

使用重塑软件包时,应执行以下操作:


d_long参考ColorStatistics的答案,数据集看起来已经是熔融状态了。仅仅做一个dcast就足够了

> data<-as.data.frame(sample)
> library(data.table)
> dtable <- dcast(data = data, year~country) 
> dtable
      year    A    B    C    D
1    1 0.17  0.8  0.1 0.35
2    2 0.44 0.24 0.39 0.65
3    3 0.61 0.94 0.19 0.65
>数据库(data.table)
>数据表
A年B年C年D年
1    1 0.17  0.8  0.1 0.35
2    2 0.44 0.24 0.39 0.65
3    3 0.61 0.94 0.19 0.65

基本R选项正在使用
重塑
如下所示

dfout <- reshape(df,
                 direction = "wide",
                 idvar = "year",
                 timevar = "country")

很高兴您发现它很有用,欢迎使用Stack Overflow!此外,请考虑接受一个给定的答案(点击复选标记),如果它解决了你的问题。
dfout <- reshape(df,
                 direction = "wide",
                 idvar = "year",
                 timevar = "country")
> dfout
  year  X.A  X.B  X.C  X.D
1    1 0.17  0.8  0.1 0.35
5    2 0.44 0.24 0.39 0.65
9    3 0.61 0.94 0.19 0.65