我有一个数据表“data”,有25列。(约15),其中包含数值(但在导入后定义为字符),我想替换某些字符,例如“,”由“.",“<”由“",“>”由“”等。(可以是10个或更多的组合),因为有些值是这样的“<0,17”或“> 1,5”。
当列名改变时(因为它影响不同的数据表),我想用这种方式解决它(我编写的代码不正确,它只是为了显示我想做的事情)。
replace <- list ("," = ".", "<" = "", ">" = "")
affectedColumns = c("name1", "name2", "name3" ... "name 14", "name 15").
mydata %>%
mutate(affectedColumns, replace)
字符串
另一个问题是,有些列是数字,有些是字符。首先将“affectedColumns”中的所有值转换为字符(as.character)>然后进行替换过程,然后将所有值转换回数字(as.numeric)是否有意义?
最后,我希望值以“.”作为逗号,没有任何“<”或“>”或空格。
有办法吗?谢谢!
5条答案
按热度按时间nnsrf1az1#
这是一个基本的R方式。
字符串
jgzswidk2#
您可以使用
readr
包中的parse_number
转换为数字,同时删除大于/小于符号。字符串
jfewjypa3#
以下是
dplyr
解决方案:字符串
编辑:
下面是一个使用
setNames
和stringr
的解决方案:首先定义新值和旧值的集合(确保转义regex元字符,如
.
):型
或者,更经济地说:
型
现在使用
str_replace_all
一次性实现这些更改:型
玩具数据:
8wtpewkr4#
考虑
mutate
、across
和case_when
函数的组合,形成dplyr
包。您可以在这里找到它们:https://dplyr.tidyverse.org/reference/across.html和这里:https://dplyr.tidyverse.org/reference/case_when.html或给予一个最小的可重复的例子。最好的,M。
mcdcgff05#
字符串
非常感谢您的努力和解决方案。然而,我没有对整个数据集进行工作。请参阅上面的示例。