如何用R整理混合变量和观测值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用R整理混合变量和观测值?相关的知识,希望对你有一定的参考价值。

我找不到任何解决我从html表导入的数据集的解决方案。这个结合了观察和变量作为行(噩梦)。

它看起来像这样:

    w <- c(5,"A",1,2)
x <- c(5,"B",3,4)
y <- c(10,"A",5,6)
z <- c(10,"B",7,8)

df <- data.frame(w,x,y,z)

rownames(df) <- c("temp","cat","obs1", "obs2")
colnames(df) <- NA

df

temp  5  5 10 10
cat   A  B  A  B
obs1  1  3  5  7
obs2  2  4  6  8

变量是temp和cat而obs1和obs2是观察值。我想要获得的是:

obs   temp cat value
obs1  5    A   1  
obs1  5    B   3  
obs2  5    A   2  
obs2  5    B   4  
obs1  10   A   5  
obs1  10   B   6  
obs2  10   A   7  
obs2  10   B   8

我和gather()and spread()but搞砸了...

有什么建议吗?

谢谢 !

答案

难道你不能只是转置它吗?

library(tidyverse)
w <- c(5,"A",1,2)
x <- c(5,"B",3,4)
y <- c(10,"A",5,6)
z <- c(10,"B",7,8)
df <- data.frame(w,x,y,z)

rownames(df) <- c("temp","cat","obs1", "obs2")
colnames(df) <- NA

t(df) %>% 
  as.data.frame() %>% 
  gather(key = "k", value = "value", "obs1", "obs2") %>% 
  select(-k) %>% 
  arrange(desc(temp))

  temp cat value
1    5   A     1
2    5   B     3
3    5   A     2
4    5   B     4
5   10   A     5
6   10   B     7
7   10   A     6
8   10   B     8
另一答案

使用data.table的解决方案。 df3是最终输出。

library(data.table)

new_col <- rownames(df)      # Save row names as the new column name
df2 <- transpose(df)         # Transpose the data frame
names(df2) <- new_col        # Assign the column name
setDT(df2)                   # Convert to data.table

# Perform the transformation
df3 <- melt(df2, measure.vars = c("obs1", "obs2"), 
            variable.name = "obs")[
  order(-temp, obs), .(obs, temp, cat, value)
]

# Print df3
df3
#     obs temp cat value
# 1: obs1    5   A     1
# 2: obs1    5   B     3
# 3: obs2    5   A     2
# 4: obs2    5   B     4
# 5: obs1   10   A     5
# 6: obs1   10   B     7
# 7: obs2   10   A     6
# 8: obs2   10   B     8

以上是关于如何用R整理混合变量和观测值?的主要内容,如果未能解决你的问题,请参考以下文章

如何用已经给的超心潮汐观测数据进行matlab调和分析

在 R 中:创建一个仅包含连续观测值的数据框和一个指示序列号的变量

线性混合模型——广义线性模型

当需要的拆分字符向量对于变量 (R) 中的所有观测值不一致时使用 strsplit

混合模型初探

在 R 中估计具有数百万个观测值和数千个变量的 OLS 模型