嗨,我有一个类似于照片中的数据框(左图),我正在尝试获取右图的格式。我该怎么做?
我知道这是一个愚蠢的问题,但我错过了一些东西..
我怎样才能得到那个结果? 非常感谢!
我试过那些
long_data <- melt(data,id=c("Test"))
data.long <- data %>% pivot_longer(-Test, names_to = "变量", values_to = "值")
我也试过了
data_long=t(数据)
library(dplyr)
library(tidyr)
df %>%
pivot_longer(-Test) %>%
pivot_wider(names_from = Test, values_from = value)
name Pre Post
<chr> <list> <list>
1 Q1 <dbl [4]> <dbl [4]>
2 Q2 <dbl [4]> <dbl [4]>
3 Q3 <dbl [4]> <dbl [4]>
或
library(dplyr)
library(tidyr)
df %>%
pivot_longer(-Test) %>%
pivot_wider(names_from = Test, values_from = value) %>%
unnest()
name Pre Post
<chr> <dbl> <dbl>
1 Q1 2 3
2 Q1 2 2
3 Q1 1 3
4 Q1 3 2
5 Q2 3 2
6 Q2 3 3
7 Q2 5 4
8 Q2 4 2
9 Q3 4 3
10 Q3 2 4
11 Q3 2 5
12 Q3 3 3
或
library(dplyr) #>= 1.1.0
library(tidyr)
df %>%
pivot_longer(-Test) %>%
pivot_wider(names_from = Test, values_from = value) %>%
unnest() %>%
summarize(mean_pre = mean(Pre), mean_post = mean(Post), .by=name)
name mean_pre mean_post
<chr> <dbl> <dbl>
1 Q1 2 2.5
2 Q2 3.75 2.75
3 Q3 2.75 3.75
数据:
df <- structure(list(Test = c("Pre", "Pre", "Pre", "Pre", "Post", "Post",
"Post", "Post"), Q1 = c(2, 2, 1, 3, 3, 2, 3, 2), Q2 = c(3, 3,
5, 4, 2, 3, 4, 2), Q3 = c(4, 2, 2, 3, 3, 4, 5, 3)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -8L))
一个选项
library(data.table)
library(dplyr)
df %>%
reframe(across(starts_with("Q"), mean), .by = Test) %>%
data.table::transpose(make.names = 'Test', keep.names = "Name")
-输出
Name Pre Post
1 Q1 2.00 2.50
2 Q2 3.75 2.75
3 Q3 2.75 3.75