我想在R中改变一个data.frame
,看起来像这样:
W Well Name Ct (dR)
A1 F_0.2,R_0.2 23.72
A2 F_0.2,R_0.2 23.82
A3 F_0.2,R_0.4 22.87
A4 F_0.2,R_0.4 23.1
B1 F_0.4,R_0.2 23.74
B2 F_0.4,R_0.2 24.01
B3 F_0.4,R_0.4 22.86
B4 F_0.4,R_0.4 22.79
C1 F_0.6,R_0.2 23.5
C2 F_0.6,R_0.2 No Ct
C3 F_0.6,R_0.4 23.03
C4 F_0.6,R_0.4 22.61
D1 F_0.8,R_0.2 23.83
D2 F_0.8,R_0.2 23.67
D3 F_0.8,R_0.4 22.48
D4 F_0.8,R_0.4 22.41
进入这个:
1 2 3 4
A 23.72 23.82 22.87 23.1
B 23.74 24.01 22.86 22.79
C 23.5 No Ct 23.03 22.61
D 23.83 23.67 22.48 22.41
更好,像这样:
R_0.2 R_0.4 R_0.6 R_0.8
F_0.2 23.72 23.82 22.87 23.1
F_0.4 23.74 24.01 22.86 22.79
F_0.6 23.5 No Ct 23.03 22.61
F_0.8 23.83 23.67 22.48 22.41
实际上有12列和8行,但你明白了点:)另外 - 这种数据排序叫做什么?
我们将'W'列切换成两列,然后将separate
和select
的'Well Name'列放到'wide'格式
spread
似乎输入数据集中的“Well Name”列值与预期输出不匹配。假设值如下面的数据中所示
library(tidyverse)
df1 %>%
separate(W, into = c("W1", "W2"), sep="(?=\\d+)") %>%
select(-`Well Name`) %>%
spread(W2, `Ct (dR)`)
# W1 1 2 3 4
#1 A 23.72 23.82 22.87 23.1
#2 B 23.74 24.01 22.86 22.79
#3 C 23.5 No Ct 23.03 22.61
#4 D 23.83 23.67 22.48 22.41
df1 %>%
separate(`Well Name`, into = c("WN1", "WN2"), sep=",") %>%
select(-W) %>%
spread(WN2, `Ct (dR)`)
# WN1 R_0.2 R_0.4 R_0.6 R_0.8
#1 F_0.2 23.72 23.82 22.87 23.1
#2 F_0.4 23.74 24.01 22.86 22.79
#3 F_0.6 23.5 No Ct 23.03 22.61
#4 F_0.8 23.83 23.67 22.48 22.41