r - 如何在每隔一行(奇数)中取值并将它们转移到每一行(偶数和奇数)或将它们切换到其他行(偶数)?
问题描述
您如何获取每隔一行(奇数)中的值并将它们转移到每一行(偶数和奇数)或将它们切换到其他行(偶数)?在数据框中,我每隔一行都有值。我希望它们出现在列的每一行中。我如何实现这一目标?另一种解决方案是切换它们,使它们仅是偶数,而不是奇数。
它当前的外观示例:
set.seed(5)
output<-data.frame(matrix("", nrow=500, ncol=1))
for(i in 1:nrow(output)){
if(i %% 2 == 0){
output[i,1] <- sample(c("A","B","C"),1,replace = T)
}
}
colnames(output) <- "work"
我希望它显示为:
set.seed(5)
output<-data.frame(matrix("", nrow=500, ncol=1))
for(i in 1:nrow(output)){
output[i,1] <- sample(c("A","B","C"),1,replace = T)
}
colnames(output) <- "work"
解决方案
如果我理解正确,请创建一个选择您想要的值的索引
> idx = seq(2, nrow(output), by = 2)
并使用idx - 1
选择要替换的行
> output[idx - 1, "work"] = output[idx, "work"]
> head(output)
work
1 B
2 B
3 C
4 C
5 A
6 A
如果有奇数行,您希望最后一行发生什么并不清楚?
请注意,生成原始数据的更有效 / R 方式可能是
df = data.frame(work = character(500))
idx = seq(2, nrow(df), by = 2)
df[idx, "work"] = sample(c("A", "B", "C"), length(idx), replace = TRUE)
推荐阅读
- node.js - Worker->Master->Worker 是否可以在 Nodejs 中使用基于 promise 的消息?
- python - 泡泡洗牌 - 加权洗牌
- r - 加载 .rda 数据集总是返回相同的
- reactjs - 转换为 TypeScript 时 API 调用抛出错误
- twitter-bootstrap - Bootstrap:2列列表(多维)->删除空格
- objective-c - LaunchDaemons 的线程睡眠问题
- amazon-web-services - 在 AWS EC2 (t3a.small) 上的某个时间后,套接字花费了太多时间来连接
- c# - EF Core 动态 lambda 子查询不起作用
- unit-testing - 使用 Mocha、酶和柴酶模拟(“点击”)的 ReactJS 单元测试不起作用
- amazon-s3 - 使用 OCaml 将对象上传到 S3