r - 定义一个新变量来计算另一列的组元素
问题描述
我有 2 列,HHVEH 和一组 SAMPN。SAMPN 的所有成员都具有相同的 HHVEH。我想定义一个新列,在每组中为 2,直到 HHVEH 的数量。
例子
SAMPN PERNO HHVEH
1 1 1
1 2 1
1 3 1
2 1 2
3 2 2
3 3 2
4 4 0
4 3 0
输出
SAMPN PERNO HHVEH mode.car
1 1 1 2
1 2 1 NA
1 3 1 NA
2 1 2 2
3 2 2 2
3 3 2 2
4 4 0 NA
4 3 0 NA
解释:第一组 HHVEH==1 所以第一行是 2 其他 NA。第二组 HHVEH==2 所以它的前 2 个 roes 应该是 2,但只有一行,所以该行是 2。第三组 HHVEH==2 都得到 2 最后一组 HHVEH==0 所以全部不适用。
structure(list(SAMPN = c(" 827", " 827", " 1133", " 1133",
" 1133", " 1133", " 1133", " 1133", " 1857", " 1857", " 1857"
), HHVEH = c(3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3), PERNO = structure(c(2L,
4L, 4L, 3L, 3L, 5L, 1L, 1L, 3L, 2L, 3L), .Label = c("1", "2",
"3", "4", "5", "6", "7"), class = "factor")), row.names = c(NA,
-11L), groups = structure(list(SAMPN = c(" 827", " 1133", " 1857"
), .rows = list(1:2, 3:8, 9:11)), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
SAMPN HHVEH PERNO mode.car
<chr> <dbl> <fct>
1 " 827" 3 2 2
2 " 827" 3 4 2
3 " 1133" 2 4 2
4 " 1133" 2 3 2
5 " 1133" 2 3 NA
6 " 1133" 2 5 NA
7 " 1133" 2 1 NA
8 " 1133" 2 1 NA
9 " 1857" 3 3 2
10 " 1857" 3 2 2
11 " 1857" 3 3 2
解决方案
这是基于更新数据的一种选择。按“SAMPN”分组后,通过根据“HHVEH”rep
中的值查找 2 来创建first
“mode.car”,其余的使用 NA
library(dplyr)
df1 %>%
group_by(SAMPN) %>%
mutate(mode.car = rep(c(2, NA_integer_),
c(pmin(n(), first(HHVEH)), pmax(0, n() - first(HHVEH)))))
# A tibble: 11 x 4
# Groups: SAMPN [3]
# SAMPN HHVEH PERNO mode.car
# <chr> <dbl> <fct> <dbl>
# 1 " 827" 3 2 2
# 2 " 827" 3 4 2
# 3 " 1133" 2 4 2
# 4 " 1133" 2 3 2
# 5 " 1133" 2 3 NA
# 6 " 1133" 2 5 NA
# 7 " 1133" 2 1 NA
# 8 " 1133" 2 1 NA
# 9 " 1857" 3 3 2
#10 " 1857" 3 2 2
#11 " 1857" 3 3 2
推荐阅读
- ubuntu - Odoo pypdf2 问题
- unity3d - Unity 游戏内渲染问题(模糊),见 GIF
- string - 比较字符串的子字符串
- python - 更正 Timedelta 列上的 Pandas 累积和
- svn - TortoiseSVN“URL ...不存在”消息被截断
- javascript - 反应窗口调整大小事件多次触发
- python - 是否可以使用 AppIndicator3 添加动画?
- xamarin.forms - Azure DevOps:如何根据阶段将变量设置为值
- c# - 单击使用 Selenium C# 的 Google 表单测验 ViewScore 按钮
- gitlab - 从 gitlab 获取大于 100 的项目用于 sourcegraph projectQuery