如何在R中制作意大利面图?

如何在R中制作意大利面图?,r,plot,interaction,R,Plot,Interaction,我有以下资料: 磁头(数据帧): 等等。。。 我想做的是:用上面的数据创建一个意大利面图。我使用的是: interaction.plot(dataframe$Days、dataframe$ID、dataframe$Result、xlab=“Time”、ylab=“Results”、legend=F)但没有一条患者线是连续的,即使他们被认为是一条长线 此外,我还想将上述数据帧转换为如下内容: ID结果天数 1 70 0 1 80 23 2 90

我有以下资料: 磁头(数据帧):

等等。。。 我想做的是:用上面的数据创建一个意大利面图。我使用的是:

interaction.plot(dataframe$Days、dataframe$ID、dataframe$Result、xlab=“Time”、ylab=“Results”、legend=F)
但没有一条患者线是连续的,即使他们被认为是一条长线

此外,我还想将上述数据帧转换为如下内容: ID结果天数

1   70     0         
1   80     23
2   90     0
2   89     15
2   99     25
3   23     0
等等。。。(我试着从每个身份证的第一个(或最小值)开始,让他们的约会从零开始。同样在意大利面图中,我希望所有患者在符合条件的情况下使用相同的颜色,如果不符合条件,则使用另一种颜色


感谢您的时间和耐心。

使用ggplot2和data.table如何

# libs
library(ggplot2)
library(data.table)

# your data
df <- data.table(ID=c(1,1,2,2,2,3),
                 Result=c(70,80,90,89,99,23),
                 Days=c(0,23,15,30,40,24))

# adjust each ID to start at day 0, sort
df <- merge(df, df[, list(min_day=min(Days)), by=ID], by='ID')
df[, adj_day:=Days-min_day]
df <- df[order(ID, Days)]

# plot
ggplot(df, aes(x=adj_day, y=Result, color=factor(ID))) +
  geom_line() + geom_point() +
  theme_bw()

您可以使用scale\u color\u manual()轻松处理数据的颜色编码。

表格部分:我有9.200行。。。我该如何调整那部分?这是选项吗:dataframe$id ect?我刚刚意识到我误解了您关于将天数调整为最小值为零的问题。请参阅更新的代码。我不确定您对data.table的要求,但是“df$ID”是访问data.table“df”的ID列的有效方法,是的,这就是我现在要告诉您的。t推导是否可以简化为
df$adj_,直到它开始工作!!谢谢你,伙计!!!你真是太棒了…最后一件事,我希望所有的ID都有相同的颜色,除非有一个语句完成,当颜色应该是红色的时候,比如说(图中只有两种颜色:黑色和红色。我用IF命令实现了吗?
# libs
library(ggplot2)
library(data.table)

# your data
df <- data.table(ID=c(1,1,2,2,2,3),
                 Result=c(70,80,90,89,99,23),
                 Days=c(0,23,15,30,40,24))

# adjust each ID to start at day 0, sort
df <- merge(df, df[, list(min_day=min(Days)), by=ID], by='ID')
df[, adj_day:=Days-min_day]
df <- df[order(ID, Days)]

# plot
ggplot(df, aes(x=adj_day, y=Result, color=factor(ID))) +
  geom_line() + geom_point() +
  theme_bw()
 ID Result Days min_day adj_day
  1     70    0       0       0
  1     80   23       0      23
  2     90   15      15       0
  2     89   30      15      15
  2     99   40      15      25
  3     23   24      24       0