gpt4 book ai didi

r - 将数据框折叠成单行并根据行 R 创建新列

转载 作者:行者123 更新时间:2023-12-05 03:14:10 24 4
gpt4 key购买 nike

我有一个包含对象名称的数据框和该对象的统计矩列表,如下所示:

Object   Mean   IQR   Skew  
x 1 1 1
y 2 2 2
z 3 3 3

我想要的是为每一行创建带有统计矩和前缀的对象名称的列。像这样:

xMean xIQR xSkew yMean yIQR ySkew zMean zIQR zSkew
1 1 1 2 2 2 3 3 3

本质上,我需要的是将数据框折叠成一行,以便它在一行中列出所有统计矩,因为我将有很多行,就像最后一行,但列的集合是有限的。

最佳答案

你可以这样做:

 df1$id <- 1
reshape(df1, idvar="id", timevar="Object", direction="wide")[-1]
# Mean.x IQR.x Skew.x Mean.y IQR.y Skew.y Mean.z IQR.z Skew.z
#1 1 1 1 2 2 2 3 3 3

或者使用 dcastreshape2 中的 melt

 library(reshape2)
dcast(melt(df1, id.var=c('id', 'Object')), id~..., value.var='value')[-1]
# x_Mean x_IQR x_Skew y_Mean y_IQR y_Skew z_Mean z_IQR z_Skew
#1 1 1 1 2 2 2 3 3 3

或者使用dplyrtidyr

 library(dplyr)
library(tidyr)

df1 %>%
gather(Var, Val, Mean:Skew) %>%
unite(VarNew,Object, Var, sep="") %>%
spread(VarNew, Val) %>%
select(-id)
# xIQR xMean xSkew yIQR yMean ySkew zIQR zMean zSkew
#1 1 1 1 2 2 2 3 3 3

数据

df1 <- structure(list(Object = c("x", "y", "z"), Mean = 1:3, IQR = 1:3, 
Skew = 1:3), .Names = c("Object", "Mean", "IQR", "Skew"), class = "data.frame", row.names = c(NA,
-3L))

关于r - 将数据框折叠成单行并根据行 R 创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com