首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中带有NAs的条件转置

R中带有NAs的条件转置
EN

Stack Overflow用户
提问于 2018-06-28 16:50:20
回答 2查看 212关注 0票数 2

我使用了dplyr包来总结一些数据。我制作的数据格式如下所示:

代码语言:javascript
复制
Iteration   Degree   Proportion
    1          0         .5
    1          30        .7
    1          60        .8
    2          0         .6
    2          30        .9
    3          0         .3
    3          30        .8
    3          60        .8

我想把我的数据转换成一个新的数据格式,其中每个3度条件都是他们自己的列,并且相应的比例值被填充。,最重要的是,当迭代没有度值时,我需要计算'NA‘值。

我正在考虑的数据文件看起来应该是这样的:

代码语言:javascript
复制
Iteration  0_Degree  30_Degree  60_Degree
     1        .5         .7         .8
     2        .6         .9         NA
     3        .3         .8         .8

找出哪里需要填写NAs是我目前面临的主要挑战。

有人知道我该怎么做吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-28 17:01:54

这可以很容易地通过来自spread包的tidyr函数实现。tidyrtidyverse的一部分。

只需使用:

代码语言:javascript
复制
library(tidyverse)
df %>% 
  spread(key = Degree, value = Proportion)

填充缺失观测的默认选项是fill = 'NA'

票数 2
EN

Stack Overflow用户

发布于 2018-06-28 17:06:15

如果不需要as.data.frame作为数据框架,则省略它。不使用包装。

代码语言:javascript
复制
as.data.frame(tapply(dd[[3]], dd[-3], c))

给予:

代码语言:javascript
复制
    0  30  60
1 0.5 0.7 0.8
2 0.6 0.9  NA
3 0.3 0.8 0.8

备注

可复制形式的输入如下:

代码语言:javascript
复制
dd <- structure(list(Iteration = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L), 
    Degree = c(0L, 30L, 60L, 0L, 30L, 0L, 30L, 60L), Proportion = c(0.5, 
    0.7, 0.8, 0.6, 0.9, 0.3, 0.8, 0.8)), class = "data.frame", row.names = c(NA, 
-8L))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51087977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档