在dplyr中使用’window’函数
发布时间:2020-12-14 02:53:10 所属栏目:Windows 来源:网络整理
导读:我需要按顺序处理数据帧的行,但需要回顾某些行.这是一个近似的例子: library(dplyr)d - data_frame(trial = rep(c("A","a","b","B","x","y"),2))d - d %% mutate(cond = rep('',n()),num = as.integer(rep(0,n())))for (i in 1:nrow(d)){ if(d$trial[i] ==
|
我需要按顺序处理数据帧的行,但需要回顾某些行.这是一个近似的例子:
library(dplyr)
d <- data_frame(trial = rep(c("A","a","b","B","x","y"),2))
d <- d %>%
mutate(cond = rep('',n()),num = as.integer(rep(0,n())))
for (i in 1:nrow(d)){
if(d$trial[i] == "A"){
d$num[i] <- 0
d$cond[i] <- "A"
}
else if(d$trial[i] == "B"){
d$num[i] <- 0
d$cond[i] <- "B"
}
else{
d$num[i] <- d$num[i-1] +1
d$cond[i] <- d$cond[i-1]
}
}
结果数据框看起来像 > d
Source: local data frame [12 x 3]
trial cond num
1 A A 0
2 a A 1
3 b A 2
4 B B 0
5 x B 1
6 y B 2
7 A A 0
8 a A 1
9 b A 2
10 B B 0
11 x B 1
12 y B 2
使用dplyr执行此操作的正确方法是什么? 解决方法
dlpyr-only解决方案:
d %>%
group_by(i=cumsum(trial %in% c('A','B'))) %>%
mutate(cond=trial[1],num=seq(n())-1) %>%
ungroup() %>%
select(-i)
# trial cond num
# 1 A A 0
# 2 a A 1
# 3 b A 2
# 4 B B 0
# 5 x B 1
# 6 y B 2
# 7 A A 0
# 8 a A 1
# 9 b A 2
# 10 B B 0
# 11 x B 1
# 12 y B 2
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xaml – 在Bing Maps上为Metro应用程序设置标记引脚的动画
- windows下安装scala环境和ide
- windows-server-2008 – 防止RDP回复域名
- 如何在Windows 10 Enterprise上运行应用程序作为shell替换
- Windows版 SQL Server 2017 AlwaysOn AG 自动初始化测试报告
- windows-server-2003 – Windows 2003 ODBC问题 – 错误100
- 限制对.NET程序集的访问?
- Windows和Native API中的系统调用?
- windows – 使用Powershell,如果最近的事件日志事件超过一小
- Windows – Application.Current在ElementHost为null
推荐文章
站长推荐
热点阅读
