des*_*gin 3 for-loop r dataframe
我有一个数据帧,dat其中一列dat$QC包含质量代码,作为整数.我想添加一个新列,QS其中包含描述每行质量代码的字符串.
这是我尝试过的:我将质量代码存储在一个向量中qcIDs,并将字符串存储在另一个向量中,qcStrings.然后我循环遍历这些并相应地填充数据框中的新列.像这样:
qcIDs <- c(1,2,3)
qcStrings <- c('foo', 'bar', 'baz')
for (ii in 1:length(qcIDs)) {
dat$QS[dat$QC == qcIDs[ii]] <- qcStrings[ii]
}
Run Code Online (Sandbox Code Playgroud)
我是R的新手并经常阅读有更好的解决问题的方法而不是for循环.是否有更多的R-ish方法来接近这个?以上看起来像我的感觉一样笨拙(感觉非常笨拙)?谢谢.
由于在数据框中最终得到一个因子是最有用的,因此只需使用给定的参数创建因子.这是一个例子:
(dat <- data.frame(QC=rep(c(1,2,3), 2)) )
## QC
## 1 1
## 2 2
## 3 3
## 4 1
## 5 2
## 6 3
Run Code Online (Sandbox Code Playgroud)
您创建因子的参数:
qcIDs <- c(1,2,3)
qcStrings <- c('foo', 'bar', 'baz')
Run Code Online (Sandbox Code Playgroud)
使用这些来编码因子dat:
dat$QC <- factor(dat$QC, levels=qcIDs, labels=qcStrings)
dat
## QC
## 1 foo
## 2 bar
## 3 baz
## 4 foo
## 5 bar
## 6 baz
Run Code Online (Sandbox Code Playgroud)
我没有时间,但它会比任何类型的合并更快.这里没有数据比较,只是对象的重新分类.