【发布时间】:2019-07-18 22:04:33
【问题描述】:
问题
我正在制作一个函数来描述给定时间序列的时间状态变化。 它会说给定列的值是否大于、小于、等于前一个,并打印结果: 它可以在同一个数据框或其他不同的对象中。我正在做 它可以转换数据以便有利于生存分析。
做了什么
我已经制作了一个 if else 阶梯,如下所示:其中 (x) 是数据帧中的第 i 列,(y) 是它之前的列 (i-1)。但是,我不知道如何定义函数的第一行以在数据框的每一列中实际执行此操作(从第二列开始计算),也不要与最后一列崩溃
func_name <- function (x, columns) {
if (x == NA) {
print("gone")
} else if (x < y) {
print("less")
} else if (x > y) {
print("more")
} else if (x = y) {
print("same")
} else {
print ("")
}
}
预期结果
理想情况下会像这样进行改造:
Id <- c(1,2,3)
Time1 <- c(3,3,4)
Time2 <- c(2,5,4)
Time3 <- c(1,5,8)
df <- data.frame(Id,Time1,Time2,Time3)
df
变成这样:
Id <- c(1,2,3)
Time1 <- c(3,3,4)
Time2 <- c("Less","More","Same")
Time3 <- c("Less","Same","More")
df2 <- data.frame(Id,Time1,Time2,Time3)
df2
任何帮助,非常感谢!
解决方案:@Andrew 和 @Cole 解决方案都可以解决问题!
【问题讨论】:
标签: r dataframe dplyr tidyverse