使用行变量作为 R 中的列
Using row variables as columns in R
我有以下数据:
split2 <-read.csv("C:\Users\Liz\Desktop\R text editing\looped\splitne.csv")
split2
TYPE VALUE
Ne 6
CI95(L) 3
CI95(U) 21
Ne 6
CI95(L) 3
CI95(U) 21
Ne 6
CI95(L) 3
CI95(U) 21
Ne 6
CI95(L) 3
CI95(U) 21
我想使用 R 将其转换为以下格式:
Ne CI95(L) CI95(U)
6 3 21
6 3 21
6 3 21
6 3 21
我试过使用 reshape2 包中的 dcast 函数
dcast(split2, TYPE~VALUE)
但是我最终得到了这个,我不知道如何正确分配 value.var 以正确覆盖:
split2$TYPE 3 6 21
1 CI95(L) 4 0 0
2 CI95(U) 0 0 4
3 Ne 0 4 0
我认为我对这个数据集的转换很愚蠢,我也尝试过对数据进行子集化和重新组合,但我似乎也无法让它工作。非常感谢任何帮助或大方向的指示!!
尝试整洁的解决方案。这假设您的 TYPE
值重复:
library("tidyverse")
df <- tribble(
~TYPE, ~VALUE,
"Ne" , 6,
"CI95(L)", 3,
"CI95(U)", 21,
"Ne" , 6,
"CI95(L)", 3,
"CI95(U)" ,21,
"Ne" , 6,
"CI95(L)" ,3,
"CI95(U)", 21,
"Ne" , 6,
"CI95(L)", 3,
"CI95(U)", 21
)
df %>%
dplyr::mutate(id = cumsum(TYPE=="Ne")) %>%
tidyr::spread(TYPE,VALUE) %>%
dplyr::select(Ne, `CI95(L)`,`CI95(U)`)
# A tibble: 4 x 3
# Ne `CI95(L)` `CI95(U)`
# * <dbl> <dbl> <dbl>
# 1 6 3 21
# 2 6 3 21
# 3 6 3 21
# 4 6 3 21
我们需要一个序列列。
library(data.table)
dcast(split2, rowid(TYPE)~TYPE)
我有以下数据:
split2 <-read.csv("C:\Users\Liz\Desktop\R text editing\looped\splitne.csv")
split2
TYPE VALUE
Ne 6
CI95(L) 3
CI95(U) 21
Ne 6
CI95(L) 3
CI95(U) 21
Ne 6
CI95(L) 3
CI95(U) 21
Ne 6
CI95(L) 3
CI95(U) 21
我想使用 R 将其转换为以下格式:
Ne CI95(L) CI95(U)
6 3 21
6 3 21
6 3 21
6 3 21
我试过使用 reshape2 包中的 dcast 函数
dcast(split2, TYPE~VALUE)
但是我最终得到了这个,我不知道如何正确分配 value.var 以正确覆盖:
split2$TYPE 3 6 21
1 CI95(L) 4 0 0
2 CI95(U) 0 0 4
3 Ne 0 4 0
我认为我对这个数据集的转换很愚蠢,我也尝试过对数据进行子集化和重新组合,但我似乎也无法让它工作。非常感谢任何帮助或大方向的指示!!
尝试整洁的解决方案。这假设您的 TYPE
值重复:
library("tidyverse")
df <- tribble(
~TYPE, ~VALUE,
"Ne" , 6,
"CI95(L)", 3,
"CI95(U)", 21,
"Ne" , 6,
"CI95(L)", 3,
"CI95(U)" ,21,
"Ne" , 6,
"CI95(L)" ,3,
"CI95(U)", 21,
"Ne" , 6,
"CI95(L)", 3,
"CI95(U)", 21
)
df %>%
dplyr::mutate(id = cumsum(TYPE=="Ne")) %>%
tidyr::spread(TYPE,VALUE) %>%
dplyr::select(Ne, `CI95(L)`,`CI95(U)`)
# A tibble: 4 x 3
# Ne `CI95(L)` `CI95(U)`
# * <dbl> <dbl> <dbl>
# 1 6 3 21
# 2 6 3 21
# 3 6 3 21
# 4 6 3 21
我们需要一个序列列。
library(data.table)
dcast(split2, rowid(TYPE)~TYPE)