r - 如何获取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
的对应值应该在同一行中。以下是我尝试过的。v1
v2
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
任何帮助深表感谢!
解决方案
除法是元素方面的。所以,它不需要任何匹配不同的“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)
推荐阅读
- ios - 如何在 iPhone X 上获取 tabBar 的高度
- vim - 当 ^n 在 ssh 上的 vim 中时,突出显示行上的文本被隐藏
- python - Jupyter Notebook 中的 Tqdm 4.28.1“未找到 IntProgress。请更新 jupyter 和 ipywidgets。”
- canvas - P5.JS:将生成艺术(使用噪声())保存为设备上的图像并在 HTML 上重新上传它们
- python - Python Flask - 没有名为“wtforms.csrf”的模块
- c# - 提供 DynamicObject 属性
- java - 如果“私有静态 int”实例变量未初始化,它是否等于 0?
- ethereum - CrowdSale 智能合约不接受付款
- java - ProcessBuilder:Git 存储库不下载
- python - Python(或CPython)中“long”数据类型的底层表示是什么?