使用 dplyr 计算一个字符串并将它们加到 R 的新列中?
Count a string & sum them in a new column in R using dplyr?
我有一个数据集,其中包含跨多个“横断面”的不同类型的观察结果。对 R 还是很陌生,正在努力解决以下问题...
我需要计算每个样带中“巢”观察的数量,但我收到一个错误,这让我觉得我可能没有使用正确的函数?最后,我想创建一个名为“nest_number”的新列,其中观察值的总和等于 nest.
数据格式如下:
transect
observation
1A
nest
1A
NA
1A
nest
1A
vocalization
1A
NA
2A
nest
2A
NA
...
...
这是我需要的输出结果:
transect
observation
nest_number
1A
nest
2
1A
NA
2
1A
nest
2
1A
vocalization
2
1A
NA
2
2A
nest
1
2A
NA
1
...
...
...
这是我使用的代码
dfNew <- df %>%
group_by(transect) %>%
mutate(number_nests = colSums(observation == "nest", na.rm = TRUE))
我得到的错误是:
'x' 必须是至少二维的数组
错误发生在第 1 组:transect = "1A".
它应该是 sum
而不是 colSums
因为 colSums
期望 data.frame/matrix
,但这里我们在逻辑向量上做 sum
( observation == "nest"
)
library(dplyr)
df %>%
group_by(transect) %>%
mutate(nest_number = sum(observation == "nest", na.rm = TRUE)) %>%
ungroup
-输出
# A tibble: 7 × 3
transect observation nest_number
<chr> <chr> <int>
1 1A nest 2
2 1A <NA> 2
3 1A nest 2
4 1A vocalization 2
5 1A <NA> 2
6 2A nest 1
7 2A <NA> 1
我有一个数据集,其中包含跨多个“横断面”的不同类型的观察结果。对 R 还是很陌生,正在努力解决以下问题...
我需要计算每个样带中“巢”观察的数量,但我收到一个错误,这让我觉得我可能没有使用正确的函数?最后,我想创建一个名为“nest_number”的新列,其中观察值的总和等于 nest.
数据格式如下:
transect | observation |
---|---|
1A | nest |
1A | NA |
1A | nest |
1A | vocalization |
1A | NA |
2A | nest |
2A | NA |
... | ... |
这是我需要的输出结果:
transect | observation | nest_number |
---|---|---|
1A | nest | 2 |
1A | NA | 2 |
1A | nest | 2 |
1A | vocalization | 2 |
1A | NA | 2 |
2A | nest | 1 |
2A | NA | 1 |
... | ... | ... |
这是我使用的代码
dfNew <- df %>%
group_by(transect) %>%
mutate(number_nests = colSums(observation == "nest", na.rm = TRUE))
我得到的错误是:
'x' 必须是至少二维的数组 错误发生在第 1 组:transect = "1A".
它应该是 sum
而不是 colSums
因为 colSums
期望 data.frame/matrix
,但这里我们在逻辑向量上做 sum
( observation == "nest"
)
library(dplyr)
df %>%
group_by(transect) %>%
mutate(nest_number = sum(observation == "nest", na.rm = TRUE)) %>%
ungroup
-输出
# A tibble: 7 × 3
transect observation nest_number
<chr> <chr> <int>
1 1A nest 2
2 1A <NA> 2
3 1A nest 2
4 1A vocalization 2
5 1A <NA> 2
6 2A nest 1
7 2A <NA> 1