r - R中的嵌套for循环,其中第二个索引在第一个索引内计数
问题描述
例如,我有一个像这样的数据集:
data <- data.frame(matrix(c(1,2,2,3,4,5,5,"a","a","b","a","a","a","b"), nrow = 7, ncol = 2, byrow = F))
X1 X2
1 a
2 a
2 b
3 a
4 a
5 a
5 b
然后我添加另一个变量“tag”,最初设置为 0。
data$tag <- 0
X1 X2 tag
1 a 0
2 a 0
2 b 0
3 a 0
4 a 0
5 a 0
5 b 0
对于重复的每一行,我希望“标签”等于 1,例如:
X1 X2 tag
1 a 0
2 a 1
2 b 1
3 a 0
4 a 0
5 a 1
5 b 1
我使用了以下代码:
for (i in data$X1) {
for (j in 1:length(data$X1)) {
if (j==2) {data$tag[j] <- 1}
}
}
但它不像我想的那样工作。我希望第二个循环(j)在前一个循环中工作以获得我想要的东西,每次 X1 更改时 j 从 1 开始。我该如何管理它?
非常感谢
解决方案
也许你可以试试ave
within(
data,
tag <- +(ave(X1, X1, FUN = length) > 1)
)
这使
X1 X2 tag
1 1 a 0
2 2 a 1
3 2 b 1
4 3 a 0
5 4 a 0
6 5 a 1
7 5 b 1
推荐阅读
- vuejs2 - Vuejs如何进行发票数学运算
- pyspark - 数据框空检查pyspark
- javascript - 如何测试一个反应组件是否正确呈现了它的两个状态?
- javascript - jQuery字符串到数字得到四舍五入
- python - How to visualize the KDE of one specific variable along with the histogram of the hole population of a data set in one graph using Python Anaconda
- php - 在字符串中替换一系列数字(身份证)PHP
- css - 如何对齐盒子项目所以按钮
- python - 如何修复:即使文件尚未上传,FilesBrowse() 也会触发事件 (PySimpleGUI)
- html - 如何使文本+按钮响应
- mysql - 如何正确设置我的本地数据库以部署到 Heroku?