我有一個資料集并使用以下代碼創建了列聯表:
disease <- c("high", "high", "high", "high", "low","low","low","low");
ToA <- c("P","A","P","P","A","A","A","P");
ToB <- c("P","A","A","P","A","P","A","P");
ToC <- c("P","P","A","P","A","A","A","P");
df <- data.frame(disease, ToA, ToB, ToC)
df %>%
pivot_longer(!disease, names_to = 'columns', values_to = 'vals') %>%
count(disease, columns, vals) %>%
pivot_wider(names_from = c(disease, vals), values_from = n,
names_sep = '_')
下表是結果。現在,即使我有多個疾病列,我也會生成相同的列聯表 - 請參見下面的資料集:

disease1 <- c("high", "low", "high", "high", "low","low","low","low");
disease2 <- c("high", "high", "high", "high", "low","low","low","low");
ToA <- c("P","A","P","P","A","A","A","P");
ToB <- c("P","A","A","P","A","P","A","P");
ToC <- c("P","P","A","P","A","A","A","P");
df <- data.frame(disease1, disease2, ToA, ToB, ToC)
誰能指導我完成?
uj5u.com熱心網友回復:
這對你有用嗎?
library(tidyverse)
disease1 <- c("high", "low", "high", "high", "low","low","low","low");
disease2 <- c("high", "high", "high", "high", "low","low","low","low");
ToA <- c("P","A","P","P","A","A","A","P");
ToB <- c("P","A","A","P","A","P","A","P");
ToC <- c("P","P","A","P","A","A","A","P");
df1 <- data.frame(disease1, disease2, ToA, ToB, ToC)
df1 |> pivot_longer(ToA:ToC,names_to = "columns", values_to = "vals") |> pivot_longer(disease1:disease2, names_to = "diseases", values_to = "disease_level") |> count(diseases,columns,vals) |> pivot_wider(names_from = c(diseases,vals),values_from = n,names_sep = "_")
基本上,您將不得不 pivot_longer 兩次,然后是您在只有一種疾病時遵循的自己的作業流程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511148.html
標籤:r循环
上一篇:如何匹配陣列和物件迭代器?
下一篇:SAS和r中相鄰列對之間的差異
