繁体   English   中英

R:根据其他列的值从特定列中减去1

[英]R: subtract 1 from specific column, based on value other column

我正在尝试对另一列(假设第一列)的值进行基本操作(例如,减去1)。 例如:对于给定的行,第一列中的值等于5。然后,我想从同一行的第5列中减去1。

数据看起来像

tmp <- data.frame(replicate(5,sample(2:5,5,rep=TRUE)))

当然,我可以通过多行代码来实现这一点,每次选择满足一定条件的总行的子样本,但我确信可以更干净,更动态地执行此操作。

另一个问题:是否有一种简单的方法可以以相同的方式引用列名而不是索引。 例如列名“ S5”? 最简单的方法是通过names(tmp),然后匹配列的名称并使用名称的索引,还是可以想到一种更简单的方法?

有什么建议么?

因此,元素的列索引位于该行的第一列中:

for (i in 1:nrow(tmp)) tmp[i, tmp[i,1]] <- tmp[i, tmp[i,1]] - 1 

如果在第一列中将列的名称作为字符(而不是作为因子!),也可以使用:

tmp <- data.frame(cInd=c("A", "B", "C"), A=1:3, B=11:13, C=21:23,
          stringsAsFactors = FALSE)
for (i in 1:nrow(tmp)) tmp[i, tmp[i,1]] <- tmp[i, tmp[i,1]] - 1 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM