[英]Replacing String Values in an R DataFrame
我正在尝试用 ReShaped melt() 函数创建的数据框中的较长名称替换某个 4/5 字母代码。 但是,它不起作用。
我一开始有什么(缩短版):
Index Fund Value
1 2021.06.01 VDEE 0.00000000
2 2021.06.02 VDEE -0.04419429
3 2021.06.03 VDEE -0.24161782
4 2021.06.04 VDEE -0.03707800
5 2021.06.07 VDEE 0.56371383
我想最终得到什么:
Index Fund Value
1 2021.06.01 FTSEDevelopedEuropeexUKEquityIndexFund 0.00000000
2 2021.06.02 FTSEDevelopedEuropeexUKEquityIndexFund -0.04419429
3 2021.06.03 FTSEDevelopedEuropeexUKEquityIndexFund -0.24161782
4 2021.06.04 FTSEDevelopedEuropeexUKEquityIndexFund -0.03707800
5 2021.06.07 FTSEDevelopedEuropeexUKEquityIndexFund 0.56371383
我目前的最终结果是:
Index Fund Value
1 2021.06.01 <NA> 0.00000000
2 2021.06.02 <NA> -0.04419429
3 2021.06.03 <NA> -0.24161782
4 2021.06.04 <NA> -0.03707800
5 2021.06.07 <NA> 0.56371383
基本上我想在数据框中用更长的字符串替换一个短代码。 但是我发现这样做的主要方法是: ReShaped[ReShaped == Fund] <- Name
。 但是当我这样做时,我得到以下错误: invalid factor level, NA generated
。 这导致我这样做。 但是,当我将stringsAsFactors = FALSE
参数添加到melt()
函数时,我仍然会收到错误,如果我这样做ReShaped[ReShaped == Fund] <- factor(Name)
关于问题是什么或如何解决它的任何想法?
注意:我想保持数据框的相同格式,然后在 ggplot2 中绘制它。
我们可以创建一个 key/val 数据集并进行连接
library(dplyr)
keydat <- tibble(Fund = c("VDEE"), val = c("FTSEDevelopedEuropeexUKEquityIndexFund"))
df1 <- df1 %>%
left_join(keydat) %>%
mutate(Fund = coalesce(val, Fund), .keep = "unused")
-输出
df1
Index Fund Value
1 2021.06.01 FTSEDevelopedEuropeexUKEquityIndexFund 0.00000000
2 2021.06.02 FTSEDevelopedEuropeexUKEquityIndexFund -0.04419429
3 2021.06.03 FTSEDevelopedEuropeexUKEquityIndexFund -0.24161782
4 2021.06.04 FTSEDevelopedEuropeexUKEquityIndexFund -0.03707800
5 2021.06.07 FTSEDevelopedEuropeexUKEquityIndexFund 0.56371383
df1 <- structure(list(Index = c("2021.06.01", "2021.06.02", "2021.06.03",
"2021.06.04", "2021.06.07"), Fund = c("VDEE", "VDEE", "VDEE",
"VDEE", "VDEE"), Value = c(0, -0.04419429, -0.24161782, -0.037078,
0.56371383)), class = "data.frame", row.names = c("1", "2", "3",
"4", "5"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.