我正在分析我從一個大資料庫中創建的幾個變數。它們大多是虛擬的或分類的,它們通常以 PAIRS 形式出現,它們是更大資料框的一部分。
對于變數,我想列印關于它的干凈計算:
- 兩個表:每個表都有每個值的頻率(包括 NA,即使它是 0);
- 兩者均值的總結
像這樣的東西:
Var01:
0 1 <NA>
50395 40292 0
Var02:
0 1 <NA>
13757 76930 0
Means:
Var01 Var02
1 68.39% 96.39%
我只需要查看這些結果一次,而不是保存它們。
變數的名稱實際上很復雜(例如:)dm_idade_0a17_pre,我不想像以前那樣復制和粘貼太多次。
我嘗試創建臨時變數以及函式table()和summary(). 我使用自定義函式將平均值視為百分比(稱為它percent())。問題只是表函式沒有向我顯示變數的名稱。
所以,我的編碼是這樣的:
###########
# CUSTOM FUNCTION
percent <- function(x, digits = 3, format = "f", ...) {
paste0(formatC(x * 100, format = format, digits = digits, ...), "%")
}
# ORIGINAL DATA FRAME
df <- data.frame(
ch_name = letters[1:5],
ch_key = c(1:5))
# 1st new variable =
df$ab_cd <- sample(0:1,5,replace = TRUE)
# 2nd new variable =
df$ab_cd_e <- sample(0:1,5,replace = TRUE)
# CREATING TEMPORARY VARIABLES
{
x1 <- df$ab_cd
x2 <- df$ab_cd_e
y1 <- table(x1, useNA = 'always')
y2 <- table(x2, useNA = 'always')
z1 <- data.frame(
"ab_cd" = percent(mean(x1)),
"ab_cd_e" = percent(mean(x2)))
# PRINTING THEM
cat("\014")
print(y1)
print(y2)
z1
}
###########
我會得到的結果是這樣的:
x1
0 1 <NA>
2 3 0
x2
0 1 <NA>
3 2 0
ab_cd ab_cd_e
1 60.00% 40.00%
如果變數的名稱x1和x2我使用的列的原始名稱,我的問題將得到解決(它很丑,但總比沒有好)。
謝謝大家的關注!
(請:這可能看起來很懶惰,但請記住,我仍然需要這樣做超過 80 次。每次,變數的名稱都不夠干凈:它們相似,這也使得CTRL F或雙擊慢。希望大家理解!)
uj5u.com熱心網友回復:
你可以這樣做:
f <- function(s1,s2) {
cat(s1)
print(table(df[[s1]],useNA='always',deparse.level=0))
cat(s1)
print(table(df[[s1]],useNA='always',deparse.level=0))
setNames(
data.frame(percent(mean(df[[s1]], na.rm=T)),percent(mean(df[[s2]], na.rm=T))),
c(s1,s2)
)
}
用法:
f("ab_cd", "ab_cd_e")
輸出:
ab_cd
0 1 <NA>
1 4 0
ab_cd
0 1 <NA>
1 4 0
ab_cd ab_cd_e
1 80.000% 40.000%
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480389.html
上一篇:R:與前導句點匹配的模式
