我目前正在研究一个由多个参与者组成的数据集。一些参与者参加了所有的后续活动,而其他人则跳过了一些后续活动。
例如,在下面的数据集中,参与者 2 仅参与了第 3 次随访,参与者 3 仅参与了第 2 次和第 3 次随访。您还可以看到一些参与者的条目超过 1 行,因为他们有多个跟进。
原始数据集只有第一列和第二列。因为我的目标是创建一个这样的进度表
我尝试使用以下代码为每次访问创建额外的列:
participant <- c(1,1,1,2,3,3,4,5,5,5 )
visit <- c(1,2,3,3,2,3,1,1,2,3)
df <- data.frame(participant, visit)
df[,3] <- as.integer(df$visit=="1")
df[,4] <- as.integer(df$visit=="2")
df[,5] <- as.integer(df$visit=="3")
colnames(df)[colnames(df) %in% c("V3","V4","V5")] <- c(
"Visit1","Visit2","Visit3")
但是,我仍然很难合并同一参与者的行,因此我无法继续制作图表(我也不知道)。我尝试过“重塑”功能,但没有奏效。group_by 函数也没有工作,仍然显示原始数据集
df1 <- df[,-2]
df1 %>%
group_by(participant)
我应该将这种情况用于什么功能:
预先感谢您的帮助!
根据您的情况,df
您可以生成图表
library(ggplot2)
library(dplyr)
df %>%
ggplot(aes(x = as.factor(visit),
y = as.factor(participant),
fill = as.factor(visit))) +
geom_tile(aes(width = 0.7, height = 0.7), color = "black") +
scale_fill_grey() +
xlab("Visit") +
ylab("Participants") +
guides(fill = "none")
如果您需要宽格式的 data.frame(类似于显示的图像,但每个参与者只有一行),请使用
library(tidyr)
library(dplyr)
df %>%
mutate(value = 1) %>%
pivot_wider(
names_from = visit,
values_from = value,
names_glue = "Visit{visit}",
values_fill = 0)
要得到
# A tibble: 5 x 4
participant Visit1 Visit2 Visit3
<dbl> <dbl> <dbl> <dbl>
1 1 1 1 1
2 2 0 0 1
3 3 0 1 1
4 4 1 0 0
5 5 1 1 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句