我具有以下数据集,如下所示:
df
cp.city cp.state cp.birth_date cp.age cp.gender cp.education_level cp.occupation
1 Savage MN 1986-04-29 29 F NULL NULL
2 Coventry RI 1965-12-19 NULL F NULL NULL
3 NULL NULL 1993-06-24 21 M NULL NULL
4 Baton Rouge LA 1991-12-29 NULL M NULL NULL
5 Tucson AZ 1955-03-20 60 F NULL NULL
6 Atlanta GA 1964-01-18 21 M NULL NULL
7 Sheffield Lake OH 1956-12-27 61 F NULL NULL
8 Ypsilanti MI 1991-04-26 23 F NULL NULL
9 NULL NULL NULL 49 M NULL NULL
10 NULL NULL 1943-05-31 70 M NULL NULL
11 NULL NULL NULL 22 M NULL NULL
12 NULL NULL 1960-12-23 54 M NULL NULL
13 New York NY 1973-03-29 42 NULL NULL NULL
14 NULL NULL 1960-07-12 54 M NULL NULL
15 NULL NULL 1957-02-25 58 F NULL NULL
16 Brunswick GA 1962-12-17 51 M NULL NULL
17 Savage MN 1986-07-12 29 M NULL NULL
18 NULL NULL 1985-09-27 29 M NULL NULL
19 Prairieville LA 1986-01-25 28 M NULL NULL
cp.contact_channel cp.language_preferred cpss.optin_language_id
1 Website ENG 40
2 Website ENG 40
3 NULL NULL 40
4 Website NULL 40
5 Website ENG 40
6 Other ENG 40
7 Website ENG 40
8 Website NULL 40
9 NULL NULL 40
10 NULL NULL 40
11 NULL NULL 40
12 NULL NULL 40
13 Website ENG 40
14 NULL NULL 40
15 NULL NULL 40
16 Website ENG 40
17 Website ENG 40
18 NULL NULL 40
19 Website NULL 40
我希望计算出可能的输出表中每一列中NULL
出现的频率和比例,如下所示:
variable freq proportion
cp.city 2 0.01
cp.state 4 0.03
我们将不胜感激。
答案 0 :(得分:2)
@Rui Barradas仍然是正确的主意,无论它是“实际” NULL
还是字符串。给你一个完整的例子,它如何工作:
> df <- data.frame(foo = c(1,"NULL",3,4), bar= c("a","NULL","NULL","d"))
>
> freq <- sapply(df,function(x) sum(ifelse(x=="NULL",1,0)))
>
> prop <- freq/nrow(df)
>
> cbind(freq, prop)
freq prop
foo 1 0.25
bar 2 0.50
注意:提出这个答案时,我在R中的NULL
,NA
和NaN
之间找到了article on the difference,
请注意,NULL与其他两个不同。 NULL表示没有值,而NA和NaN表示有一些值,尽管其中一个值可能不可用。
这也许也可以解释为什么您无法使用其中的data.frame
值来初始化NULL
,正如我和其他人在尝试回答此问题时发现的那样。