嗨,我有這個由包 Publish 制作的表,該函式稱為單變數表。
> > table1 = summary(univariateTable(vaccinated~Sex Agegrp Q(SampleAge) variable1 variable2 etc.etc.
> data = hospital),
> show.pvalues=F)
我得到的表格是這樣的,它顯示了括號中的頻率和百分比(我只是輸入了人工數字而不是所有變數):
| 多變的 | 等級 | 已接種疫苗 =1 (n=52) | 已接種疫苗 = 0 (n=34) |
|---|---|---|---|
| 性別 | 米 | 30 (57.7) | 60 (54.3) |
| F | 22 (42.3) | 46 (34.7) |
我的愿望是將 vaccinated = 1 和 vaccinated = 0 的列分成 4 個單獨的列:一個是頻率,一個是百分比。我怎樣才能做到這一點,同時將所有其他變數保留在表中?
我試過這個,但它沒有保留表中的所有變數
str_split_fixed(table1$`vaccinated = 0 (n=34)`, " ", 2)
uj5u.com熱心網友回復:
像這樣的東西:
library(data.table)
library(dplyr)
ToNumeric <- function(x) {
as.numeric(gsub(" |\\)", "", x))
}
new_table <- bind_cols(
tstrsplit(table1$x1, "\\("),
tstrsplit(table1$x2, "\\(")
) %>% data.frame() %>% apply(2, ToNumeric)
其中 table1 是您的資料集,“x1”和“x2”類似于“已接種疫苗 = 1 (n = 52)”和“已接種疫苗 = 0 (n = 34)”。new_table 沒有列名,您應該手動設定它。
uj5u.com熱心網友回復:
也許這值得一試:
資料:
df <- data.frame(
Variable = c("Sex", NA),
LEVEL = c("M", "F"),
`Vaccinated = 1 (n=52)` = c("30 (57.7)", "60 (54.3)"),
`Vaccinated = 0 (n=34)` = c("22 (42.3)", "46 (34.7)"))
現在pivot_longer,然后extract將相關資料為列:
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = 3:4, names_to = 'Vacc') %>%
extract(col = Vacc,
into = c("Num_vacc", "Total"),
regex = "\\D (\\d)\\D (\\d )",
convert = TRUE) %>%
extract(col = value,
into = c("Freq", "Pctg"),
regex = "(\\d )\\D ([\\d.] )",
convert = TRUE)
# A tibble: 4 x 6
Variable LEVEL Num_vacc Total Freq Pctg
<chr> <chr> <int> <int> <int> <dbl>
1 Sex M 1 52 30 57.7
2 Sex M 0 34 22 42.3
3 NA F 1 52 60 54.3
4 NA F 0 34 46 34.7
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/352464.html
下一篇:如何替換資料集中的缺失點?
