r - 如何使用前一行和前一列的值

标签 r dataframe dplyr

我正在尝试创建一个新变量,它是先前行和列的函数。我在 dplyr 中找到了 lag() 函数,但它不能完全完成我想要的。

library(dplyr)
x = data.frame(replicate(2, sample(1:3,10,rep=TRUE)))

   X1 X2
1   1  3
2   2  3
3   2  2
4   1  3
5   2  3
6   2  1
7   3  2
8   1  1
9   1  3
10  2  2

x = mutate(x, new_col = # if x2==1, then the value of x1 in the previous row,
                        # if x2!=1, then 0))

我最好的尝试:
foo = function(x){
    if (x==1){
        return(lag(X1))
    }else{
        return(0)
}

x = mutate(x, new_col=foo(X1))

最佳答案

我们可以使用 ifelse

x %>% 
  mutate(newcol = ifelse(X2==1, lag(X1), 0))

关于r - 如何使用前一行和前一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45308743/

相关文章:

R 验证库

Python - 使用基于另一个数据框中的索引的条件填充数据框的最快方法

R:循环自定义 dplyr 函数

r - 满足条件时如何重复序列

Python - 类型错误 : expecting string or bytes object

r - 如何有效地为依赖 dplyr 的自定义函数使用不同的参数?

r - 将 NetCDF 文件中的时间维度单位从几个月更改为几个月

r - R中使用CamelCase分隔字符串中的标题和副标题

r - 范围-如果存在具有相同名称的本地var,如何在父环境中评估对象?

python - Pandas str.contains,包含所有给定的字符