Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何计算数据帧列中特定值的出现次数_R_Dplyr - Fatal编程技术网

R 如何计算数据帧列中特定值的出现次数

R 如何计算数据帧列中特定值的出现次数,r,dplyr,R,Dplyr,我有如下数据集,如下所示: 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

我有如下数据集,如下所示:

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
variable   freq  proportion
cp.city     2       0.01
cp.state    4       0.03
我希望计算可能输出表中每列出现的
NULL
的频率和比例,如下所示:

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
variable   freq  proportion
cp.city     2       0.01
cp.state    4       0.03

非常感谢您的帮助。

@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
>df
>频率
>支柱
>cbind(频率,道具)
频率道具
foo 10.25
巴2 0.50
注意:在回答这个问题时,我在R中的
NULL
NA
NaN
之间发现了这个问题:

请注意,NULL与其他两个不同。NULL表示没有值,而NA和NaN表示有一些值,尽管其中一个值可能不可用


这也可以解释为什么你不能用
NULL
值初始化
data.frame
,正如我和其他人在回答这个问题时发现的那样。

@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
>df
>频率
>支柱
>cbind(频率,道具)
频率道具
foo 10.25
巴2 0.50
注意:在回答这个问题时,我在R中的
NULL
NA
NaN
之间发现了这个问题:

请注意,NULL与其他两个不同。NULL表示没有值,而NA和NaN表示有一些值,尽管其中一个值可能不可用


这也可以解释为什么您不能用
NULL
值初始化
数据.frame
,正如我和其他人在回答这个问题时发现的那样。

sapply(df,函数(x)sum(is.NULL(x))
。这给出了比例。那么,计算比例就很简单了。奇怪。我从来没有在这样的列中获得过
NULL
data.frame(a=1:3,b=list(NULL,NULL,NULL))
对我来说失败了。这是一个“R”
NULL
还是一个文本字符串
“NULL”
?(@RuiBarradas,您对我的示例数据的函数返回所有
0
,这与(正常)帧中的no
NULL
一致。)我认为这是一个字符串,而不是逻辑字符串NULL@r2evans我已经用
NA
测试了我的
sapply
,但不能用
NULL
测试。此外,在我的第一条评论中,我的意思显然是“这给出了频率。”@RuiBarradas是的,但除非发生了一些非常奇怪的事情,
sum(is.null(x))
将始终为0。(是的,我用
NA
进行了测试,考虑到帧中
NULL
s的假设,你的方法很好,这显然不是事实。不破坏方法,将其更改为
sum(x==“NULL”)
是可比的。
sapply(df,函数(x)sum(is.NULL(x)))
。这给出了比例。然后计算比例就很简单了。奇怪。我从来没有在这样的列中得到过
NULL
data.frame(a=1:3,b=list(NULL,NULL,NULL))
对我来说失败。这是一个“R”
NULL
还是一个字符串
“NULL”
?(@RuiBarradas,您对我的示例数据的函数返回所有
0
,这与(正常)帧中的no
NULL
一致。)我认为这是一个字符串,而不是逻辑字符串NULL@r2evans我已经用
NA
测试了我的
sapply
,但不能用
NULL
测试。而且,在我的第一条评论中,我显然是指“这给出了频率。”@RuiBarradas是的,但除非发生了什么奇怪的事情,
sum(is.null(x))
将始终为0。(是的,我用
NA
进行了测试,考虑到帧中
NULL
s的假设,你的方法很好,这显然不是事实。不破坏方法,将其更改为
sum(x==“NULL”)
是可比的。当你想要
0
1
时,使用
as.integer(条件)
,它的速度快了几个数量级。向上投票。1)你每天都会学到新东西,谢谢!2)这不取决于这里需要哪个比例吗?除以
总和(频率)
将告诉你该频率与所有其他频率/列的比较情况。我假设OP想知道每个列的比例(即该列中
NULL
的百分比)。这两个数字可能都很有趣,这取决于您对数据的最终目标。是的,关于第2点您是对的)。这就是为什么我删除了它。如果您想要
0
1
使用
作为.integer(条件),而不是
ifelse
,它的速度快了几个数量级。向上投票。1)你每天都会学到新东西,谢谢!2)这不取决于这里需要哪个比例吗?除以
总和(频率)
将告诉你该频率与所有其他频率/列的比较情况。我假设OP想知道每个列的比例(即该列中
NULL
的百分比)。这两个数字可能都很有趣,这取决于您对数据的最终目标。是的,关于第2点您是对的)。这就是我删除它的原因。