请随意修改
书名
关于那个问题。
我有一个
data.frame
有三个
拉贝尔德
变量。
require(Hmisc)
set.seed(0)
df <- data.frame(var1=sample(c(0, 1, NA), 100, replace=TRUE),
var2=sample(c(0, 1, NA), 100, replace=TRUE),
var3=sample(c(0, 1, NA), 100, replace=TRUE))
label(df$var1) <- "One"
label(df$var2) <- "Two"
label(df$var3) <- "Three"
我想计算百分比,然后像这样显示它们的组合
0 1 <NA>
One 0.27 0.37 0.36
Two 0.29 0.41 0.30
Three 0.45 0.31 0.24
下面的代码确实有效。但我的问题是如何简化这段代码?变量的名称是编号的。你可以这样做来获取所有相关的变量
names(df)[startsWith(names(df), "var")]
这个
指向
变量的数量是可变的/灵活的。;)
我从那里得到名字前缀(在这个例子中
var
v3_5_*
,
v4_1_*
,…
有什么想法或提示吗?
这是完整的工作(但不是简化)代码。
#!/usr/bin/env Rscript
set.seed(0)
df <- data.frame(var1=sample(c(0, 1, NA), 100, replace=TRUE),
var2=sample(c(0, 1, NA), 100, replace=TRUE),
var3=sample(c(0, 1, NA), 100, replace=TRUE))
label(df$var1) <- "One"
label(df$var2) <- "Two"
label(df$var3) <- "Three"
t1 <- table(df$var1, useNA="always")
t1 <- 100 / sum(t1) * t1 / 100
t2 <- table(df$var2, useNA="always")
t2 <- 100 / sum(t2) * t2 / 100
t3 <- table(df$var3, useNA="always")
t3 <- 100 / sum(t3) * t3 / 100
m <- rbind(t1, t2, t3)
rownames(m) <- c(label(df$var1),
label(df$var2),
label(df$var3))