计算满足 R 中多个条件的字符行
Count character rows meeting multiple criteria in R
我正在尝试计算大型数据集上 R 中满足多个条件(不同列中的条件)的行数,但在获得我想要的结果时遇到了一些问题。
示例数据框:
LU <- c("A", "A", "P", "P", "A", "G", "A", "G")
Type <- c("one", "one", "one", "three", "two", "three", "one", "two")
Style <- c("C-acq", "C-acq", "C-acq", "N-acq", "C-acq", "Ox", "C-acq", "N-acq")
df <- data.frame(LU, Type, Style)
为了计算位置为 A-01 的苹果数量,我试过这个:
length(intersect(which(df1['LU']=="A", which(df['Type']=="one"))))
但无法将其设置为 work/get 错误,提示“函数 'which' 的选择方法:未定义的列已选择”。 sum 函数适用于这个模拟数据,但是当我尝试将它应用于我自己的数据时,它似乎只是将符合我列出的任何标准的行数相加(而不是根据我应用的标准)或说 NA(我知道这是不正确的)。
我用过的求和函数(适用于这个迷你数据,但不适用于我的数据):
sum(df1$LU == "A" & df1$Type == "one" & df1$Style == "C-acq")
是否有另一种方法可以计算满足多个条件的行数? (不确定如何让计数函数执行此操作)。我认为我的数据存在一个问题,即行可能具有 NA 值,这可能会干扰求和函数。
我知道有很多关于这样的问题(下面列出的其他线程),所以如果这是一个多余的问题但找不到适合我的数据的答案,我很抱歉。感谢您的帮助!
计数 table 输出
Rows meeting multiple conditions
这里我们需要使用 [[
提取为 vector
或添加 ,
(使用 tibble/data.table
它可能不起作用)或使用 $
.还有,第一个which
没有关闭
length(intersect(which(df[['LU']]=="A"), which(df[['Type']]=="one")))
#[1] 3
此外,语法将 df
和 df1
显示为对象名称,而示例对象是 'df'
或者我们也可以使用 subset
和 nrow
nrow(subset(df, LU == "A" & Type == "one"))
#[1] 3
如果有 NA
个元素,添加 & !is.na(LU) & !is.na(Type)
或使用 %in%
作为 %in%
returns FALSE 用于 NA 元素,而 ==
returnsNA
nrow(subset(df, LU %in% "A" & Type %in% "one"))
我正在尝试计算大型数据集上 R 中满足多个条件(不同列中的条件)的行数,但在获得我想要的结果时遇到了一些问题。
示例数据框:
LU <- c("A", "A", "P", "P", "A", "G", "A", "G")
Type <- c("one", "one", "one", "three", "two", "three", "one", "two")
Style <- c("C-acq", "C-acq", "C-acq", "N-acq", "C-acq", "Ox", "C-acq", "N-acq")
df <- data.frame(LU, Type, Style)
为了计算位置为 A-01 的苹果数量,我试过这个:
length(intersect(which(df1['LU']=="A", which(df['Type']=="one"))))
但无法将其设置为 work/get 错误,提示“函数 'which' 的选择方法:未定义的列已选择”。 sum 函数适用于这个模拟数据,但是当我尝试将它应用于我自己的数据时,它似乎只是将符合我列出的任何标准的行数相加(而不是根据我应用的标准)或说 NA(我知道这是不正确的)。
我用过的求和函数(适用于这个迷你数据,但不适用于我的数据):
sum(df1$LU == "A" & df1$Type == "one" & df1$Style == "C-acq")
是否有另一种方法可以计算满足多个条件的行数? (不确定如何让计数函数执行此操作)。我认为我的数据存在一个问题,即行可能具有 NA 值,这可能会干扰求和函数。
我知道有很多关于这样的问题(下面列出的其他线程),所以如果这是一个多余的问题但找不到适合我的数据的答案,我很抱歉。感谢您的帮助!
计数 table 输出
Rows meeting multiple conditions
这里我们需要使用 [[
提取为 vector
或添加 ,
(使用 tibble/data.table
它可能不起作用)或使用 $
.还有,第一个which
没有关闭
length(intersect(which(df[['LU']]=="A"), which(df[['Type']]=="one")))
#[1] 3
此外,语法将 df
和 df1
显示为对象名称,而示例对象是 'df'
或者我们也可以使用 subset
和 nrow
nrow(subset(df, LU == "A" & Type == "one"))
#[1] 3
如果有 NA
个元素,添加 & !is.na(LU) & !is.na(Type)
或使用 %in%
作为 %in%
returns FALSE 用于 NA 元素,而 ==
returnsNA
nrow(subset(df, LU %in% "A" & Type %in% "one"))