这只是我的数据集的快照。我有 12 个 org 对应 23 个不同的 abx.classes(例如青霉素、氨基糖苷类等)。我必须生成一个有 4 列的表; org,abx类,总数0(指耐药),总数1(指易感)。我需要使用循环方法来自动执行此操作(),而不是手动键入。应形成值为 0 或 1 的 org 和 abx.class 对。
df_long <- pivot_longer(filtered_mergedfinal, cols = c(Penicillins, Aminoglycosides, Trimethoprim, Macrolides, Lincosamides, Second_gen_cephalosporins,
第三代头孢菌素类、氟喹诺酮类、碳青霉烯类、甘氨酰环素类、第四代头孢菌素类、
多粘菌素、Beta_lactam_beta_lactamase_inhibitor、Monobactams、Amphenicols、Trimethoprim_sulfonamide、
四环素类、β_内酰胺类、
糖肽、恶唑烷酮、第一代头孢菌素、磺胺、类固醇)、
名称_to =“abx.class”,值_to =“suscept”)
结果2 <- df_long %>% group_by (org, abx.class, suscept) %>% 总结(频率=n())
柳叶刀<- na.omit(result2)
filtered_lancet <- lancet %>%过滤器(!grepl(“其他|污染物”,组织))
图书馆(tidyr)
transformed_lancet <- lancet %>%pivot_wider(names_from =“suscept”,values_from =“频率”,names_prefix =“suscept_”)
敏感数据<- na.omit(transformed_lancet)
错误: 我这样做了,但我需要使用循环方法,因为这会强制数据以我想要的方式显示。而不是使用带有所有参数的数据框来为我工作(提取所需的信息)。
这是一个用于对数据进行建模的随机样本:
set.seed(1)
df1 <- cbind(org = sample(c("A","B", "C"), 10, T), as.data.frame(matrix(sample(c(0,1, NA), 100, T), 10)))
> df1
org V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 A NA NA 1 1 NA 0 0 0 1 1
2 C 0 0 0 0 1 NA 0 0 1 1
3 A 0 0 NA NA 1 NA 0 0 1 0
4 B 0 0 0 1 1 1 NA NA NA NA
5 A 1 0 NA 0 1 NA 1 1 1 NA
6 C 1 1 1 0 0 NA NA 0 1 1
7 C 1 0 1 NA 1 1 0 0 NA NA
8 B 1 0 1 1 1 NA 0 NA NA 1
9 B NA 1 1 1 1 NA 1 NA NA 0
10 C 0 1 NA NA 1 0 0 NA 0 1
...下面是循环,用于输出计数
result <- data.frame() # empty dataframe
for (i in 2:ncol(df1)){
loop_df <- as.data.frame(do.call(rbind,
tapply(df1[,i], df1$org, \(x)
c(names(df1)[i], sum(x, na.rm=TRUE),
sum(x==0, na.rm = TRUE)
))))
loop_df$org <- rownames(loop_df)
rownames(loop_df) <- NULL
result <- rbind(result, loop_df)
}
names(result)<- c("abx.class", "suscept_1", "suscept_0", "org")
结果是:
> result|>select(org, everything())
org abx.class suscept_1 suscept_0
1 A V1 1 1
2 B V1 1 1
3 C V1 2 2
4 A V2 0 2
5 B V2 1 2
6 C V2 2 2
7 A V3 1 0
8 B V3 2 1
9 C V3 2 1
10 A V4 1 1
11 B V4 3 0
12 C V4 0 2
13 A V5 2 0
14 B V5 3 0
15 C V5 3 1
16 A V6 0 1
17 B V6 1 0
18 C V6 1 1
19 A V7 1 2
20 B V7 1 1
21 C V7 0 3
22 A V8 1 2
23 B V8 0 0
24 C V8 0 3
25 A V9 3 0
26 B V9 0 0
27 C V9 2 1
28 A V10 1 1
29 B V10 1 1
30 C V10 3 0