Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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中的data.frame创建一个空(";)值表_R_Count_Na - Fatal编程技术网

从r中的data.frame创建一个空(";)值表

从r中的data.frame创建一个空(";)值表,r,count,na,R,Count,Na,我写了一些代码来创建一个列名称表,以及每个列中有多少值是NA。现在我想更改此代码以计算列中存在多少空字符串 以下是一些通用数据: d <- data.frame("ID" = c("A", "B", "", "C"), "VAL" = c(1, NA, 2, 3), "ORDER" = c(0, 3, 6, 7), "MARKET" = c("ENT", "HOUSE", "RETAIL", "

我写了一些代码来创建一个列名称表,以及每个列中有多少值是
NA
。现在我想更改此代码以计算列中存在多少空字符串

以下是一些通用数据:

d <- data.frame("ID" = c("A", "B", "", "C"),
                "VAL" = c(1, NA, 2, 3),
                "ORDER" = c(0, 3, 6, 7),
                "MARKET" = c("ENT", "HOUSE", "RETAIL", ""))
我的问题是,如何将此代码转换为除了计数之外的其他操作?在上面的代码中,我使用的是函数
is.na
,但我不知道有一个函数可以计算空字符串

上述代码的示例输出为:

Column  Missing_Values
   VAL               1
我的问题的示例输出如下所示:

Column  Missing_Values
    ID               1
MARKET               1

不要使用for循环。查看“应用”功能。这会让你的生活轻松很多

# Sum up empty string per column over all columns using the apply function
tmp <- apply(d,2,function(x) sum(x=='',na.rm=TRUE)) 

# Create new dataframe of the results
res <- data.frame('Column'=names(tmp), 'Missing_Values'=as.numeric(tmp)) 

# Display results with nonzero values
res[res$Missing_Values!=0,] 
#使用apply函数对所有列中每列的空字符串求和

tmp不要用于循环。查看“应用”功能。这会让你的生活轻松很多

# Sum up empty string per column over all columns using the apply function
tmp <- apply(d,2,function(x) sum(x=='',na.rm=TRUE)) 

# Create new dataframe of the results
res <- data.frame('Column'=names(tmp), 'Missing_Values'=as.numeric(tmp)) 

# Display results with nonzero values
res[res$Missing_Values!=0,] 
#使用apply函数对所有列中每列的空字符串求和

tmp这里有一个
dplyr
tidyr
解决方案。首先,我创建数据帧

d <- data.frame("ID" = c("A", "B", "", "C"),
                "VAL" = c(1, NA, 2, 3),
                "ORDER" = c(0, 3, 6, 7),
                "MARKET" = c("ENT", "HOUSE", "RETAIL", ""))
这就给了,

#   Column Missing_Values
# 1     ID              1
# 2 MARKET              1

这里有一个
dplyr
tidyr
解决方案。首先,我创建数据帧

d <- data.frame("ID" = c("A", "B", "", "C"),
                "VAL" = c(1, NA, 2, 3),
                "ORDER" = c(0, 3, 6, 7),
                "MARKET" = c("ENT", "HOUSE", "RETAIL", ""))
这就给了,

#   Column Missing_Values
# 1     ID              1
# 2 MARKET              1
怎么样

n <- colSums(d == "", na.rm = TRUE)
rev(stack(n[n > 0]))
#      ind values
# 1     ID      1
# 2 MARKET      1
n0]))
#ind值
#1身份证1
#2市场1
怎么样

n <- colSums(d == "", na.rm = TRUE)
rev(stack(n[n > 0]))
#      ind values
# 1     ID      1
# 2 MARKET      1
n0]))
#ind值
#1身份证1
#2市场1

加载
库(dplyr)
不起作用,因为它找不到函数
聚集
,因为它在
tidyr
中,所以在整个
库(tidyverse)
包中加载后,您的解决方案可以工作。@Bear Ack。你说得对。我会更新我的答案。很抱歉。加载
库(dplyr)
无法工作,因为它找不到函数
聚集
,因为它位于
tidyr
中,所以在加载整个
库(tidyverse)
包后,您的解决方案可以工作。@Bear Ack。你说得对。我会更新我的答案。很抱歉。我比我更喜欢这个答案,因为它更简洁,直接使用
colSums
函数而不是使用
apply(sum)
,并且还显示了两个我从未听说过/使用过的基本函数:
rev
stack
。谢谢我比我更喜欢这个答案,因为它更简洁,直接使用
colSums
函数,而不是使用
apply(sum)
,并且还显示了我从未听说过/使用过的两个基本函数:
rev
stack
。谢谢