R函数将行排列成列

R函数将行排列成列,r,R,将行值展开到列中 数据看起来像 > head(df2) ID fungi Conc Abs date_no 1 1 R3 2.500000 0.209 0 22 1 R3 1.250000 0.153 0 43 1 R3 0.625000 0.159 0 64 1 R3 0.312500 0.164 0 85 1 R3 0.156250 0.157 0 106

将行值展开到列中

数据看起来像

> head(df2)
    ID fungi     Conc   Abs date_no
1    1    R3 2.500000 0.209       0
22   1    R3 1.250000 0.153       0
43   1    R3 0.625000 0.159       0
64   1    R3 0.312500 0.164       0
85   1    R3 0.156250 0.157       0
106  1    R3 0.078125 0.170       0
我使用了这个函数,它将日期列扩展为三列,但没有正确填充它们

separate_DF <- spread(df2, "date_no", "Abs")
因此,三个日期列由Abs值填充。每种浓度的真菌都是它自己的一行。

试试这个

library(tidyr)

txt <- "fungi date  Abs Conc
1      1     x   2.5
1      2     x   2.5
1      3     x   2.5
2      1     x   2.5
2      2     x   2.5
2      3     x   2.5
"
date_df <- read.table(textConnection(txt), header = TRUE)
print(spread(date_df, date, Abs, sep=""))
试试这个

library(tidyr)

txt <- "fungi date  Abs Conc
1      1     x   2.5
1      2     x   2.5
1      3     x   2.5
2      1     x   2.5
2      2     x   2.5
2      3     x   2.5
"
date_df <- read.table(textConnection(txt), header = TRUE)
print(spread(date_df, date, Abs, sep=""))

你从差价电话中得到的有什么问题吗?我觉得不错。您可以将
sep=“\u”
添加到参数列表中,以将
日期
添加到列名称中。它会集中进行一些奇怪的计算,因此列不再正确。当它在三个新的日期列中分离Abs值时,一次只填充一列。因此date1的值为1:24、date2 25:96和date3 97:168。当一列具有值时,其他两列具有NAs。添加sep=“\u1”无法解决此问题。您能否提供一些发生此问题的示例数据?因为这不会发生在你提供的东西上。请注意,spread将为每个独特的真菌/conc组合创建一行,并显示该独特组合的所有日期。更新原始帖子,了解更多信息。这有帮助吗?当我运行你问题中的代码,或者在你问题中的新数据上运行TheRimalaya的答案时,我得到的结果看起来非常合理。也许你也可以这样做,把结果放在你的问题中,而不是你觉得有什么不对。你从价差中得到的有什么不对?我觉得不错。您可以将
sep=“\u”
添加到参数列表中,以将
日期
添加到列名称中。它会集中进行一些奇怪的计算,因此列不再正确。当它在三个新的日期列中分离Abs值时,一次只填充一列。因此date1的值为1:24、date2 25:96和date3 97:168。当一列具有值时,其他两列具有NAs。添加sep=“\u1”无法解决此问题。您能否提供一些发生此问题的示例数据?因为这不会发生在你提供的东西上。请注意,spread将为每个独特的真菌/conc组合创建一行,并显示该独特组合的所有日期。更新原始帖子,了解更多信息。这有帮助吗?当我运行你问题中的代码,或者在你问题中的新数据上运行TheRimalaya的答案时,我得到的结果看起来非常合理。也许你也可以这样做,把结果放在你的问题上,而不是确切地说你觉得哪里不对。
  fungi Conc date1 date2 date3
1     1  2.5     x     x     x
2     2  2.5     x     x     x