r - 有没有办法在 R 中处理一个混乱的变量?
问题描述
我有以下数据集。我正在尝试使 pivot_wider 使每个 tmc_code 成为一列,并且值来自速度。然后滞后并领先一些价值观。但是,如果您查看 tmc_code,这些值很奇怪,我无法更改它们。我想给他们起我能应付的名字。例如,值“119+04117”最好是“tmc119_04117”。我猜 R 不喜欢值或变量中的“+”。如果我需要重述问题,请告诉我。我知道这是一个混乱的问题,但我的数据集真的很混乱。这是我的数据集的示例。
data<- structure(list(tmc_code = c("119P04108", "119P04109", "119+04117",
"119+04106", "119+04110", "119+04113",
"119+04111", "119P04107", "119+04110",
"119P04117", "119+04114", "119+04107",
"119+04112" ),
measurement_tstamp = c("2020-06-05 20:10:00", "2020-08-26 10:30:00",
"2020-11-15 18:20:00", "2020-10-16 13:20:00",
"2020-09-17 00:20:00", "2020-02-09 15:10:00",
"2020-03-19 09:15:00", "2020-11-05 03:25:00",
"2020-07-23 22:35:00", "2020-11-25 22:05:00",
"2020-03-28 07:40:00", "2020-02-14 22:20:00",
"2020-05-01 16:25:00"),
speed = c(69, 64, 74.39, 63.37, 61.8, 71.39, 61, 68.4, 74.18, 62.8, 64, 70.98,
66.53)), row.names = c(NA, -13L), class = "data.frame")
我的 pivot_wider 代码是
data<- data%>%
pivot_wider(names_from = tmc_code, values_from = speed)
解决方案
你可以试试下面的代码
reshape(
data,
idvar = "measurement_tstamp",
timevar = "tmc_code",
direction = "wide"
)
或者
reshape(
transform(
data,
tmc_code = gsub("(\\w{3}).(.*)", "tmc\\1_\\2", tmc_code)
),
idvar = "measurement_tstamp",
timevar = "tmc_code",
direction = "wide"
)
或者
reshape(
transform(
data,
tmc_code = paste0("tmc",gsub("\\+","_", tmc_code))
),
idvar = "measurement_tstamp",
timevar = "tmc_code",
direction = "wide"
)
或者
data %>%
mutate(tmc_code = paste0("tmc", gsub("\\+", "_", tmc_code))) %>%
pivot_wider(names_from = tmc_code, values_from = speed)
推荐阅读
- javascript - 不带括号的 JavaScript 箭头函数,例如 functionName = > {}
- haskell - Threenpenny gui - 单击时捕获鼠标坐标并使用它们构建一些状态
- swagger - Swagger UI:对于发布请求正文中的对象数组,explode=true 被忽略
- javascript - 复制没有值的对象结构
- android - 在我的 Android 应用程序中注册时,如何根据用户提供的信息创建自定义用户 ID?
- r - 将 url 列合并为 R 中的一列
- javascript - ES6 捕获提交事件
- angular - RXJS AngularFire - 从 Observable 获取 Observables
- android - 如果添加其他嵌套视图,ConstraintLayout 中的 RecyclerView 总是覆盖底部
- java - Java 中的重载、覆盖和绑定