因子变量的累积和

顶猫

我正在尝试在R中创建一组累积因子变量。我df有4个时间的假人治疗:

id t1 t2 t3 t4 
1   0  0  0  1 
2   1  0  0  0
3   0  0  0  1
4   0  1  0  0
5   1  0  0  0

我想要的是一组按时间划分的累积处理变量(在以下示例中称为tc),如下所示:

id tc1 tc2 tc3 tc4 
1   0  0  0  1 
2   1  1  1  1
3   0  0  0  1
4   0  1  1  1
5   1  1  1  1

我已经尝试过该cumsum函数,但是我不知道如何为因子变量处理该函数。关于如何执行此操作的任何想法?

大卫·阿伦堡(David Arenburg)

一种方法是尝试使用该matrixStats::rowCummaxs函数,但您需要先转换为该函数matrix虽然,通过你的数据结构来看,我会建议有工作matrix,而不是data.frame摆在首位

data1[-1] <- matrixStats::rowCummaxs(as.matrix(data1[-1]))
data1
#   id t1 t2 t3 t4
# 1  1  0  0  0  1
# 2  2  1  1  1  1
# 3  3  0  0  0  1
# 4  4  0  1  1  1
# 5  5  1  1  1  1

apply逐行的方法(也将转换为matrix

data1[-1] <- t(apply(data1[-1], 1, cummax))

或@joran暗示-我们可以尝试进行长/宽转换

library(data.table)
dcast(melt(setDT(data1), 
           id = "id"
           )[, value := cummax(value),
             by = id], 
      id ~ variable)

#    id t1 t2 t3 t4
# 1:  1  0  0  0  1
# 2:  2  1  1  1  1
# 3:  3  0  0  0  1
# 4:  4  0  1  1  1
# 5:  5  1  1  1  1

或者

library(dplyr)
library(tidyr)
data1 %>%
  gather(variable, value, -id) %>%
  group_by(id) %>%
  mutate(value = cummax(value)) %>%
  spread(variable, value)

# Source: local data frame [5 x 5]
# Groups: id [5]
# 
#      id    t1    t2    t3    t4
#   (int) (int) (int) (int) (int)
# 1     1     0     0     0     1
# 2     2     1     1     1     1
# 3     3     0     0     0     1
# 4     4     0     1     1     1
# 5     5     1     1     1     1

或@alexis_laz的有趣替代方法是pmax使用Reduce

data1[-1] <- Reduce(pmax, data1[-1], accumulate = TRUE)
data1
#   id t1 t2 t3 t4
# 1  1  0  0  0  1
# 2  2  1  1  1  1
# 3  3  0  0  0  1
# 4  4  0  1  1  1
# 5  5  1  1  1  1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对因子变量和逻辑进行排名

来自分类Dev

从日期创建因子变量“周末”和“工作日”

来自分类Dev

R:级别映射表和因子变量标签

来自分类Dev

返回因子变量首次出现和最后出现的日期

来自分类Dev

R:级别映射表和因子变量标签

来自分类Dev

ggplot中按因子和连续变量的颜色

来自分类Dev

R:以预定的出现频率和因子的自动更新级别删除变量(因子)的行

来自分类Dev

R:以预定的出现频率和因子的自动更新级别删除变量(因子)的行

来自分类Dev

从因子变量和连续变量创建一组连续变量

来自分类Dev

累积访问对象属性和累积功能

来自分类Dev

jq中的累积和

来自分类Dev

递归累积和

来自分类Dev

数组的累积和

来自分类Dev

什么是累积Universe和`*:*`?

来自分类Dev

pyspark中的累积和

来自分类Dev

快速累积和?

来自分类Dev

数组的累积和

来自分类Dev

dplyr 条件累积和

来自分类Dev

MySQL中的累积和

来自分类Dev

Pandas - 连续的累积和

来自分类Dev

多元累积和

来自分类Dev

附带条件的唯一唯一变量的累积和

来自分类Dev

R?中一个data.frame的每个变量的累积和。

来自分类Dev

附带条件的唯一唯一变量的累积和

来自分类Dev

如何替换因子变量?

来自分类Dev

在dplyr包中使用group_by和mutate通过id变量创建新的因子变量

来自分类Dev

串联使用mutate和ifelse来基于因子变量创建新的数字变量

来自分类Dev

如何使用mutate和ifelse将数值变量转换为多级因子变量

来自分类Dev

累积计算Stata中的变量