根据另一列将多列组织成一行
Organising multiple columns into a row based on another column
绝对的R新手,我知道这应该很简单,但是我花了2个小时没有成功。
如何从中转换我的数据框(数据框的前 6 行)
Symbol AF wave
CUX1 0.0975 1
CUX1 0.0337 3
CUX1 0.0217 4
LUC7L2 0.0488 1
LUC7L2 0.0515 3
LUC7L2 0.0422 4
这样的事情?
Symbol AF wave 1 wave 2 wave 3 wave 4
CUX1 0.0975 0.0975 NA 0.0337 0.0217
LUC7L2 0.0337 0.0488 NA 0.0515 0.0422
嗨,阿克伦,
根据你的建议,我得到了这样的结果:
Symbol AF wave 1 wave 2 wave 3 wave 4
CUX1 0.0975 0.0975 NA NA NA
LUC7L2 0.0337 0.0337 NA NA NA
CUX1 0.0975 NA 0.0337 NA NA
LUC7L2 0.0337 NA 0.0515 NA NA
CUX1 0.0975 NA NA 0.082 NA
LUC7L2 0.0337 NA NA 0.0781 NA
快到了...
我们需要先 complete
缺失的 'wave' 然后 pivot_wider
从 'long' 重塑为 'wide' 格式
library(dplyr)
library(tidyr)
library(stringr)
library(data.table)
df1 %>%
mutate(wave = str_c('wave', wave)) %>%
complete(wave = str_c('wave', 1:4)) %>%
mutate(rn = rowid(wave)) %>%
pivot_wider(names_from = wave, values_from = AF) %>%
filter(!is.na(Symbol)) %>%
select(-rn)
# A tibble: 2 x 5
# Symbol wave1 wave2 wave3 wave4
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 CUX1 0.0975 NA 0.0337 0.0217
#2 LUC7L2 0.0488 NA 0.0515 0.0422
数据
df1 <- structure(list(Symbol = c("CUX1", "CUX1", "CUX1", "LUC7L2", "LUC7L2",
"LUC7L2"), AF = c(0.0975, 0.0337, 0.0217, 0.0488, 0.0515, 0.0422
), wave = c(1L, 3L, 4L, 1L, 3L, 4L)), class = "data.frame", row.names = c(NA,
-6L))
绝对的R新手,我知道这应该很简单,但是我花了2个小时没有成功。
如何从中转换我的数据框(数据框的前 6 行)
Symbol AF wave
CUX1 0.0975 1
CUX1 0.0337 3
CUX1 0.0217 4
LUC7L2 0.0488 1
LUC7L2 0.0515 3
LUC7L2 0.0422 4
这样的事情?
Symbol AF wave 1 wave 2 wave 3 wave 4
CUX1 0.0975 0.0975 NA 0.0337 0.0217
LUC7L2 0.0337 0.0488 NA 0.0515 0.0422
嗨,阿克伦,
根据你的建议,我得到了这样的结果:
Symbol AF wave 1 wave 2 wave 3 wave 4
CUX1 0.0975 0.0975 NA NA NA
LUC7L2 0.0337 0.0337 NA NA NA
CUX1 0.0975 NA 0.0337 NA NA
LUC7L2 0.0337 NA 0.0515 NA NA
CUX1 0.0975 NA NA 0.082 NA
LUC7L2 0.0337 NA NA 0.0781 NA
快到了...
我们需要先 complete
缺失的 'wave' 然后 pivot_wider
从 'long' 重塑为 'wide' 格式
library(dplyr)
library(tidyr)
library(stringr)
library(data.table)
df1 %>%
mutate(wave = str_c('wave', wave)) %>%
complete(wave = str_c('wave', 1:4)) %>%
mutate(rn = rowid(wave)) %>%
pivot_wider(names_from = wave, values_from = AF) %>%
filter(!is.na(Symbol)) %>%
select(-rn)
# A tibble: 2 x 5
# Symbol wave1 wave2 wave3 wave4
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 CUX1 0.0975 NA 0.0337 0.0217
#2 LUC7L2 0.0488 NA 0.0515 0.0422
数据
df1 <- structure(list(Symbol = c("CUX1", "CUX1", "CUX1", "LUC7L2", "LUC7L2",
"LUC7L2"), AF = c(0.0975, 0.0337, 0.0217, 0.0488, 0.0515, 0.0422
), wave = c(1L, 3L, 4L, 1L, 3L, 4L)), class = "data.frame", row.names = c(NA,
-6L))