r - R - 基于另一列改变列
问题描述
使用 R:对于数据框:
A<-c(3,3,3,3,1,1,2,2,2,2,2)
df<-data.frame(A)
如何添加列以使输出与以下内容相同:
A<-c(3,3,3,3,1,1,2,2,2,2,2)
df<-data.frame(A)
B<-c(1,1,1,0,1,0,1,1,0,0,0)
mutate(df,B)
换句话说,是否有“B”列的公式 - 这样它会查看“A”列......并列出“1”,3次放置一个“0”......等等。
所以 - 所需的输出(给定列'A')是:
谢谢你。
解决方案
在这里,每次更改时我都会分配一个新组A
,然后在每个组B
中的前 #A 行中放置一个 1。
(如果A
每个组的值不同,您可以将前两行替换为group_by(A)
,但不清楚这是否是一个公平的假设。)
library(dplyr)
df %>%
mutate(group = cumsum(A != lag(A, default = 0))) %>%
group_by(group) %>%
mutate(B = 1 * (row_number() <= A)) %>%
ungroup()
结果
# A tibble: 11 x 3
A group B
<dbl> <int> <dbl>
1 3 1 1
2 3 1 1
3 3 1 1
4 3 1 0
5 1 2 1
6 1 2 0
7 2 3 1
8 2 3 1
9 2 3 0
10 2 3 0
11 2 3 0
推荐阅读
- reactjs - 使用 Hashrouter 登录时重定向
- android - SwitchPreference 无法正常工作 - 为什么会这样?
- node.js - 如何发送带参数的 GET 请求
- php - 如何在php中创建删除行按钮
- php - 如何使用 HTML 中的选择框在数据库中搜索特定用户并在表格中显示该信息?
- python - 是否可以使用 pyomo 对最小最大问题进行建模
- python - 使用 Python 获取当前月份的所有日期
- html - 如何执行反映我对 PHP 所做更改的 html?
- django - Django2.2 上下文管理器 | {{template_tags}} | 可变极限?
- jenkins - 如何通过 bitbucket-hook 将面包屑信息传递给詹金斯?