我有一个从lightroom导出到R的数据框架,在这个数据框架中,对于每一张照片都用1 (*)到5(*)进行分级,我想用数字替换这些星星,但是尝试了几个函数(gsub
,replace
),但都没有成功。
Lightroom$Rating <- gsub("*", "1", Lightroom$Rating)
Lightroom <- replace(Lightroom, "*", "1")
谢谢你的帮助
发布于 2022-04-29 17:46:40
如果我正确地理解了你的问题,你想用实际的计数来代替星星的数量。这允许一些灵活性,如果您想要做其他事情,每个匹配的星号数(*)。
library(tidyverse)
Lightroom <- data.frame(Rating = c("*",
"**",
"***",
"****",
"*****"))
Lightroom_subbed <- Lightroom %>%
mutate(Rating2 = case_when(grepl(x = Rating, pattern = "^\\*{1}$") ~ "1",
grepl(x = Rating, pattern = "^\\*{2}$") ~ "2",
grepl(x = Rating, pattern = "^\\*{3}$") ~ "3",
grepl(x = Rating, pattern = "^\\*{4}$") ~ "4",
grepl(x = Rating, pattern = "^\\*{5}$") ~ "5"
)
)
Lightroom_subbed
Rating Rating2
1 * 1
2 ** 2
3 *** 3
4 **** 4
5 ***** 5
发布于 2022-04-29 19:36:49
可用的方法要简单得多。使用factor
数据类型的基础整数结构:
as.numeric(factor(Lightroom$Rating))
[1] 1 2 3 4 5
https://stackoverflow.com/questions/72061661
复制相似问题