来自data.frame的R查找图表

问题描述 投票:1回答:1

我想在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行,但你明白了点:)另外 - 这种数据排序叫做什么?

r dataframe crosstab
1个回答
1
投票

我们将'W'列切换成两列,然后将separateselect的'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

data

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
© www.soinside.com 2019 - 2024. All rights reserved.