【发布时间】:2018-04-17 09:09:17
【问题描述】:
我一直在尝试使用下面列出的多种不同方法按第一列(或第一天)对我的数据框进行排序,但无济于事。我怀疑这可能是因为它试图按第一个数字排序,但我不确定如何更改它以使其正确排序行。数据集如下:
df1
[day][sample1][sample2]
[1,]day0 22 11
[2,]day11 23 15
[3,]day15 25 14
[4,]day2 21 13
[5,]day8 20 17
...
我希望每天订购整排。我已经尝试了以下
df[sort(as.character(df$day)),]
df[order(as.character(df$day)),]
mixedorder(as.character(df$day)) (gtools package)
mixedorder 仅输出数字索引。
当前代码:
df_0$day = metadata_df[,3]
df_0 <- df_0[,c(8,1:7)]
df1 <- aggregate(df_0[,2:ncol(df_0)], df_0[1], mean)
df1 <- df1[mixedorder(as.character(df1$day)),]
df1$day <- factor(df1$day, levels = unique(df1$day))
rownames(df1) <- 1:nrow(df1)
##Plotting expression levels
Plot1 <- ggplot() +
geom_line(data=df1, aes(x=day, y=sample1, group=1, color="blue"))+
geom_line(data=df2, aes(x=day, y=sample1, group=2, color="red"))
请注意,我对 df2 进行了与对 df1 相同的转换。 df1 和 df2 是相同的,只是它们的值略有不同。
【问题讨论】:
-
你需要
df[mixedorder(as.character(df$day)) ,] -
生成可重复数据的代码会很有用 - 通常很有帮助,这样人们可以粘贴一些代码并使用(虚拟)数据进行测试