R中带有NA的条件转置
Conditional Transpose with NAs in R
我使用 dplyr 包总结了一些数据。我生成的数据框看起来像这样:
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' 值。
我正在考虑的数据框看起来像这样:
Iteration 0_Degree 30_Degree 60_Degree
1 .5 .7 .8
2 .6 .9 NA
3 .3 .8 .8
确定需要填写 NA 的位置是我目前面临的主要挑战 运行。
有没有人知道我该如何完成这个任务?
谢谢!
这可以通过 tidyr
包中的 spread
函数轻松实现。 tidyr
是 tidyverse
的一部分。
只需使用:
library(tidyverse)
df %>%
spread(key = Degree, value = Proportion)
填充缺失观察值的默认选项是fill = 'NA'
。
如果您不需要它作为数据框,请省略 as.data.frame
。没有使用包。
as.data.frame(tapply(dd[[3]], dd[-3], c))
给予:
0 30 60
1 0.5 0.7 0.8
2 0.6 0.9 NA
3 0.3 0.8 0.8
备注
可重现形式的输入是:
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))
我使用 dplyr 包总结了一些数据。我生成的数据框看起来像这样:
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' 值。
我正在考虑的数据框看起来像这样:
Iteration 0_Degree 30_Degree 60_Degree
1 .5 .7 .8
2 .6 .9 NA
3 .3 .8 .8
确定需要填写 NA 的位置是我目前面临的主要挑战 运行。
有没有人知道我该如何完成这个任务?
谢谢!
这可以通过 tidyr
包中的 spread
函数轻松实现。 tidyr
是 tidyverse
的一部分。
只需使用:
library(tidyverse)
df %>%
spread(key = Degree, value = Proportion)
填充缺失观察值的默认选项是fill = 'NA'
。
如果您不需要它作为数据框,请省略 as.data.frame
。没有使用包。
as.data.frame(tapply(dd[[3]], dd[-3], c))
给予:
0 30 60
1 0.5 0.7 0.8
2 0.6 0.9 NA
3 0.3 0.8 0.8
备注
可重现形式的输入是:
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))