首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R数据帧用step检查和减法

R数据帧用step检查和减法
EN

Stack Overflow用户
提问于 2018-06-19 15:00:44
回答 2查看 30关注 0票数 1

我有以下数据框架:

代码:

代码语言:javascript
运行
复制
name <- c("A","A","A","B")
a <- c (1,2,3,4)
b <- c (5, 6, 7, 8)

df <- data.frame(name,a,b)

我要做的是复制excel步骤。

如果在第2行中的名称,==名称在第1行中,那么6-1

如果在第3行中的名称,==名称在第2行,那么7-2

如果在第4行中命名为==,则在第3行中不使用B <> A。

因此,预期的结果将是:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-19 15:06:17

我们可以用

代码语言:javascript
运行
复制
library(dplyr)
df %>%
   group_by(name) %>%
   mutate(new = lag(lead(b)-a))
# A tibble: 4 x 4
# Groups:   name [2]
#  name      a     b   new
#  <fct> <dbl> <dbl> <dbl>
#1 A         1     5     NA
#2 A         2     6     5
#3 A         3     7     5
#4 B         4     8    NA
票数 1
EN

Stack Overflow用户

发布于 2018-06-19 15:04:53

下面是dplyr的一次尝试

代码语言:javascript
运行
复制
library(dplyr)
df %>% group_by(name) %>% mutate(result = b- lag(a))

# A tibble: 4 x 4
# Groups: name [2]
#  name      a     b result
#  <fct> <dbl> <dbl> <dbl>
#1 A      1.00  5.00 NA   
#2 A      2.00  6.00  5.00
#3 A      3.00  7.00  5.00
#4 B      4.00  8.00 NA 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50931513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档