【发布时间】:2020-02-20 14:07:57
【问题描述】:
我正在处理一个数据框,其中包含一个名为“Marker”的变量,该变量显示了我收集的所有样本的两个值。 例如,数据框如下:
Sample.File Sample.Name Marker value
1 a a_1 xxx 16
2 a a_1 xxx 18
3 a a_1 yyy 16
4 a a_1 yyy 20
5 a a_1 zzz 9
6 a a_1 zzz 13
7 b b_1 xxx 10
8 b b_1 xxx 10
9 b b_1 yyy 6
10 b b_1 yyy 12
11 b b_1 zzz 14
12 b b_1 zzz 14
由以下代码提供:
data <- data.frame(
Sample.File = as.factor(c("a", "a", "a", "a", "a", "a", "b", "b", "b", "b",
"b", "b")),
Sample.Name = as.factor(c("a_1", "a_1", "a_1", "a_1", "a_1", "a_1", "b_1",
"b_1", "b_1", "b_1", "b_1", "b_1")),
Marker = as.factor(c("xxx", "xxx", "yyy", "yyy", "zzz", "zzz", "xxx",
"xxx", "yyy", "yyy", "zzz", "zzz")),
value = c(16L, 18L, 16L, 20L, 9L, 13L, 10L, 10L, 6L, 12L, 14L, 14L)
)
我想使用的新数据框应该通过转置当前数据来实现,但要为所有收集的样本维护列 Sample.File 和 Sample.Name。此外,我想为标记为“值”的列获取新变量以如下标记(例如 xxx & xxx.1、yyy & yyy.1、zzz & zzz.1)。
我想要实现的表如下所示:
Sample.File Sample.Name xxx xxx.1 yyy yyy.1 zzz zzz.1
1 a a_1 16 18 16 20 9 13
2 b b_1 10 10 6 12 14 14
我想使用代码而不将报告的标签名称写入“标记”列(因为我可以获得多达 100 个不同的标签)。 我尝试使用以下代码,但无法实现我的目标:
我尝试使用以下代码,但无法实现目标:
library(dplyr)
library(tidyr)
data %>%
gather(Sample.File, Sample.Name) %>%
spread(value)
Error: `var` must evaluate to a single number or a column name, not a double vector
Run `rlang::last_error()` to see where the error occurred.
In addition: Warning message:
attributes are not identical across measure variables;
they will be dropped
如果有人能解决这个问题,我将非常感激!
【问题讨论】: