For 循环适用于初学者 - 它如何在 R 中更好地工作?
For loops are for beginners - how does it work better in R?
我有一个包含大约 75,000 个观察值的数据集,我想在第一步中稍微准备一下。
比如我想在某个条件下设置一个变量。
我现在的经典方法是逐行迭代整个数据集。检查每一行的条件,然后设置变量。
这种方法是否正确,尤其是在计算时间方面?
初始数据
for (row in 1:nrow(kader_test)) {
if (kader_test[row,]$saison <= kader_test[row,]$jahr_im_team_seit) {
kader_test[row,]$gespielt_von = kader_test[row,]$im_team_seit
}
}
Nach der FOR Schleife sieht man, dass sich in Zeile 1 und 6 etwas geändert hat。 Gibt es hierfür einen eleganteren Weg?
结果
谢谢。
我想一个好的解决方案是 dplyr 包:
library(dplyr)
kader_test %>%
dplyr::mutate(gespielt_von = ifelse(saison <= jahr_im_team_seit, im_team_seit, NA))
因为 R 是矢量化的,所以您可以使用简单的基本 R ifelse
语句。
kader_test$gespielt_von <- ifelse(kader_test$saison <= kader_test$jahr_im_team_seit, kader_test$im_team_seit, NA)
对不起,我没有显示数据。下次我会做得更好
首先,感谢您的回答,它实际上工作得很好。计算在几毫秒内完成。
现在我还有更多的障碍。我们开始了:)
我有一个包含大约 75,000 个观察值的数据集,我想在第一步中稍微准备一下。
比如我想在某个条件下设置一个变量。
我现在的经典方法是逐行迭代整个数据集。检查每一行的条件,然后设置变量。
这种方法是否正确,尤其是在计算时间方面?
初始数据
for (row in 1:nrow(kader_test)) {
if (kader_test[row,]$saison <= kader_test[row,]$jahr_im_team_seit) {
kader_test[row,]$gespielt_von = kader_test[row,]$im_team_seit
}
}
Nach der FOR Schleife sieht man, dass sich in Zeile 1 und 6 etwas geändert hat。 Gibt es hierfür einen eleganteren Weg?
结果
谢谢。
我想一个好的解决方案是 dplyr 包:
library(dplyr)
kader_test %>%
dplyr::mutate(gespielt_von = ifelse(saison <= jahr_im_team_seit, im_team_seit, NA))
因为 R 是矢量化的,所以您可以使用简单的基本 R ifelse
语句。
kader_test$gespielt_von <- ifelse(kader_test$saison <= kader_test$jahr_im_team_seit, kader_test$im_team_seit, NA)
对不起,我没有显示数据。下次我会做得更好
首先,感谢您的回答,它实际上工作得很好。计算在几毫秒内完成。
现在我还有更多的障碍。我们开始了:)