首页 > 解决方案 > 如何获取R中同一行但不同列的元素的确切位置?

问题描述

假设我有以下名为dat.

dat <- read.table(header = TRUE, text = '
id  v1  v2
1   5   0.5
1   4   0.5
1   6   0.5
2   2   0.2
2   3   0.2
2   7   0.2')

我的计划是拆分数据id并对其他列进行一些计算。例如,在计算中,代码应该检查和var3的对应值应该在同一行中。以下是我尝试过的。v1v2

dat2 <- list()
var3 <- list()
mtr <- data.frame(id=NA,var3=NA)

for (i in seq_along(unique(dat$id))){
  dat2[[i]] <- subset(dat,dat$id==unique(dat$id)[i])
  var3[[i]] <- dat2[[i]]$v1/dat2[[i]]$v2    # Here is my problem!
  mtr[i,1] <- dat2[[i]]$id
  mtr[i,2] <- var3[[i]]
}

预期的输出是mtr

1 10
1 8
1 12
2 10
2 15
2 35

任何帮助深表感谢!

标签: rdataframeposition

解决方案


除法是元素方面的。所以,它不需要任何匹配不同的“id”

dat$V3 <- dat$v1/dat$v2

-输出

dat
#  id v1  v2 V3
#1  1  5 0.5 10
#2  1  4 0.5  8
#3  1  6 0.5 12
#4  2  2 0.2 10
#5  2  3 0.2 15
#6  2  7 0.2 35

如果需要进行子集化,请在split之后使用list

outlst <- split(dat, dat$id)

推荐阅读