从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
。谢谢