我的数据帧
>df <- data.frame(Names = c("A", "B", "C"), Total = c("125", "2 500", "1 350"),
> Boys = c("50", "1 500", "350"),
> Girls = c("75", "1 000", "1 000"))
Names Total Boys Girls
1 A 125 50 75
2 B 2 500 1 500 1 000
3 C 1 350 350 1 000
所有值都是字符串。同学们,我想用空格代替非空格。我知道
df %>%
mutate(Total = gsub(" ", "", Total),
Boys = gsub(" ", "", Boys),
Girls = gsub(" ", "", Girls))
但是有没有一种(tidyverse风格的)更普遍的方式来做到这一点呢?大约
df %>% # (This don't work)
mutate(across(c(Total, Boys, Girls), gsub(" ", "", .x)))
也就是说,我正在寻找一种可以很好地扩展的解决方案。
提前致谢。
也许你可以试试下面的< code > gsub < code > as . matrix
type.convert(cbind(df[1], gsub("\\s+", "", as.matrix(df[-1]))), as.is = TRUE)
这给了
Names Total Boys Girls
1 A 125 50 75
2 B 2500 1500 1000
3 C 1350 350 1000
我们可以使用str_remove
中的stringr
library(stringr)
library(dplyr)
df %>%
mutate(across(-Names, ~ as.numeric(str_remove(., "\\s+"))))
# Names Total Boys Girls
#1 A 125 50 75
#2 B 2500 1500 1000
#3 C 1350 350 1000
您可以使用:
library(dplyr)
df %>% mutate(across(c(Total, Boys, Girls), ~as.numeric(gsub(" ", "", .))))
# Names Total Boys Girls
#1 A 125 50 75
#2 B 2500 1500 1000
#3 C 1350 350 1000
或在底座 R 与拉普利
:
df[-1] <- lapply(df[-1], function(x) as.numeric(gsub(" ", "", x)))
我试图基于不同列中的字符串匹配来有条件地替换多列中的值,但我希望能够使用cross()函数在单行代码中这样做,但我不断得到对我来说不太有意义的错误。我觉得这可能是一个简单的解决方案,所以如果有人能给我指出正确的方向,那将是很棒的! 这是产生此错误的数据的一个小样本: 错位关闭支架的诅咒!感谢大家的帮助...正确的解决方案是
问题内容: 我有一些带有以下格式的方程式的字符串。 我还有一个文本文件,其中包含每个变量的名称,例如: 等等… 什么是对我来说,写代码的最佳方式,使其在插头到处发生,并且对等? 问题答案: 对于string ,请使用以下函数:
我希望我的程序替换输入字符串中的每个元音。
我有一个PHP脚本这是一个字符串替换函数,它接受数组中的字符,如果在字符串中找到任何字符,就替换它们。是否有与该函数等价的java函数。我找到了一些方法,但有些是使用循环,有些是重复语句,但在Java中没有找到类似的单行解决方案。
问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是:
我通常必须对一系列变量/列执行等价的计算,这些变量/列可以通过它们的后缀来标识(范围,假设从_a到_i),并将结果保存在新的变量/列中。计算是等效的,但计算中使用的变量不同。这些也可以通过相同的后缀(_a to _i)来识别。所以,我基本上想要达到的是: 这是我得到的最远的: 因此,我能够在oldvar1_a上“循环”到oldvar1_I,从中减去z,并将结果保存在名为oldvar1_a_new的