r - 如果使用的元素从 R 中的向量中选择下一个
问题描述
我对 R 很陌生,不幸的是我找不到下面问题的答案。
我有一个数据集:
df <- data.frame(room = rep("room1.", 6),
name = c("piet", "klaas", "Sara", "mo.", "piet", "jo"),
time = c("9:00", "9:00", "12:00", "14:00", "14:00", "14:00"))
df
#> room name time
#> 1 room1. piet 9:00
#> 2 room1. klaas 9:00
#> 3 room1. Sara 12:00
#> 4 room1. mo. 14:00
#> 5 room1. piet 14:00
#> 6 room1. jo 14:00
和一个向量:
pcs <- c("pc1", "pc2", "pc3")
我想添加一个列pc
,其中基于 if 语句添加了向量的一个元素。如果pc
为空,则将向量中的第一个元素添加到 column pc
,但如果time
已经使用了中的值,则选择下一个元素。
所需的输出:
room name time pc
room1. piet 9:00 pc1
room1. klaas 9:00 pc2
room1. Sara 12:00 pc1
room1. mo. 14:00 pc1
room1. piet 14:00 pc2
room1. jo 14:00 pc3
解决方案
这是使用的基本 R 解决方案ave
dfout <- within(df,pc <- ave(seq(nrow(df)),time,FUN = function(v) pcs[seq_along(v)]))
这样
> dfout
room name time pc
1 room1. piet 9:00 pc1
2 room1. klaas 9:00 pc2
3 room1. Sara 12:00 pc1
4 room1. mo. 14:00 pc1
5 room1. piet 14:00 pc2
6 room1. jo 14:00 pc3
数据
df <- structure(list(room = c("room1.", "room1.", "room1.", "room1.",
"room1.", "room1."), name = c("piet", "klaas", "Sara", "mo.",
"piet", "jo"), time = c("9:00", "9:00", "12:00", "14:00", "14:00",
"14:00")), class = "data.frame", row.names = c(NA, -6L))
推荐阅读
- python - if 函数:如果列 A==1 AND 1 列 B 在列表 X 中且列 C 不为空,则为 1。否则,为 0
- c - 如何编写一个程序,接受用户 F0、F1 和 fmax 的 3 个输入,并输出所有素数斐波那契数?
- javascript - 根文件中的console.log() 上面的导入语句在导入之前不会执行
- python-tesseract - 阅读手写输入以识别学生
- firebase - 是否可以在 Firestore 中运行聚合查询?
- gcc - gcc 汇编器 - 只创建必要的最少指令
- keras - tf 2.0 AttributeError:模块“tensorflow”没有属性“get_default_session”
- javascript - ReactJS 无法映射数组
- php - 重复更新时插入或使用 CASE 的 MariaDB 语法
- javascript - 尝试在 React 组件中的表单中上传 PDF 文件,但在使用 setFormData 时获取 {}