从 R 列中的所有条目中减去列的 max

2023-12-25

我有一个数据框,如下所示:

kfm <- data.frame ("data_source"=c("kfm", "kfm", "kfm", "kfm"), 
               "1996"= c(56, 56, 56, 57), 
               "1997"=c(8, 8, 9, 7),
               "1998"= c(101, 102, 101, 105))

我想从每一年列中减去每一列的最大值(在我的数据框中,我有大约 20 年)。因此,如果 1996 年的最大值是 57。那么我想从 1996 年的每个条目中减去 57。 1997 年的最大值是 9,所以我想从 1997 年的每个条目中减去 9。我希望生成的数据框看起来像:

kfm_differences <- data.frame ("data_source"=c("kfm", "kfm", "kfm", "kfm"), 
               "1996"= c(-1, -1, -1, 0), 
               "1997"=c(-1, -1, 0, -2),
               "1998"= c(-4, -3, -4, 0))

这样每个条目现在都会显示最大值和条目之间的差异。我不知道该怎么做。我觉得我需要使用apply()不知何故,但我不太确定。

Thanks!


看起来很简单。

kfm_differences <- kfm
kfm_differences[-1] <- lapply(kfm[-1], function(x) x - max(x))

顺便说一句,当创建列名以数字开头的数据框时,请使用参数check.names = FALSE,否则 R 将附加一个X.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 R 列中的所有条目中减去列的 max 的相关文章

随机推荐