gpt4 book ai didi

用R中的列名称替换数据框中的字符串

转载 作者:行者123 更新时间:2023-12-02 18:04:58 24 4
gpt4 key购买 nike

我想替换 R 数据框中的字符串。数据框显示每个生产订单(行)何时使用资源/生产步骤(列)。对于这个特定的分析,不需要时间值,而是我想用列名代替时间戳。

数据看起来像这样

df_current <- data.frame(
Prod.order = seq(123, 127),
B100 = c("01:00:00", "02:00:00", "03:00:00", "04:00:00", "05:00:00"),
`B100 (2)` = c(NA, NA, "06:00:00", "07:00:00", NA),
D200 = c("02:00:00", NA, NA, NA, "06:00:00"),
D300 = c(NA, NA, "04:00:00", "05:00:00", "07:00:00"),
check.names = FALSE)

我希望它看起来像这样。 (我也想删除 NA,但这不是问题)

 df_desired <- data.frame(
Prod.order = seq(123, 127),
B100 = c("B100", "B100", "B100", "B100", "B100"),
`B100 (2)` = c("", "", "B100 (2)", "B100 (2)", ""),
D200 = c("D200", "", "", "", "D200"),
D300 = c("", "", "D300", "D300", "D300"),
check.names = FALSE)

看起来很简单,但我一直无法弄清楚。附注如果该解决方案适合 dplyr 管道,那就太棒了;)

谢谢:D

最佳答案

一个基本解决方案,其中names(df)[col(df)]复制列名称:

df_current[-1] <- ifelse(is.na(df_current), '', names(df_current)[col(df_current)])[, -1]
df_current

# Prod.order B100 B100 (2) D200 D300
# 1 123 B100 D200
# 2 124 B100
# 3 125 B100 B100 (2) D300
# 4 126 B100 B100 (2) D300
# 5 127 B100 D200 D300

或使用t():

df_current[-1] <- t(ifelse(t(is.na(df_current)), '', names(df_current)))[, -1]
df_current

关于用R中的列名称替换数据框中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73495441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com