当前位置: 首页 > 知识库问答 >
问题:

我如何变异所有匹配R中的字符串的列?

艾正浩
2023-03-14

下面是我使用dplyr尝试的代码,

#Make the dataframe
library(dplyr)
fake <-data.frame(id=c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3),              
              time=c(rep("Time1",9), rep("Time2",9)), 
              test=c("calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc","calcium","magnesium","zinc"), 
              score=rnorm(18))
df <- dcast(fake, id ~ time + test)

#My attempt
df <- df %>% mutate(category=cut(df[,grepl("calcium", colnames(df))], breaks=c(-Inf, 1.2, 6, 12, Inf), labels=c(0,1,2,3)))
#Error:  'x' must be numeric

#My second attempt 
df <- df %>% mutate_at(vars(contains('calcium')), cut(breaks=c(-Inf, 1.2, 6, 12, Inf), labels=c(0,1,2,3)))
#Error: "argument "x" is missing, with no default"

共有1个答案

东方俊明
2023-03-14

这就是你想要的吗?

library(tidyverse)
library(reshape2) # I added this for your dcast

fake <-data.frame(id=c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3),              
                  time=c(rep("Time1",9), rep("Time2",9)), 
                  test=c("calcium","magnesium","zinc","calcium","magnesium","zinc", 
                         "calcium","magnesium","zinc","calcium","magnesium","zinc",
                         "calcium","magnesium","zinc","calcium","magnesium","zinc"), 
                  score=rnorm(18))
df <- dcast(fake, id ~ time + test)
df <- as_tibble(df) #added this

#code
df <- df %>% 
  mutate_at(vars(contains('calcium')), 
            ~cut(., 
                 breaks=c(-Inf, 1.2, 6, 12, Inf), 
                 labels=c(0, 1, 2, 3))) %>%
  mutate_at(vars(ends_with("_calcium")), funs(as.numeric)) 

它产生了以下内容:

# A tibble: 3 x 7
     id Time1_calcium Time1_magnesium Time1_zinc Time2_calcium Time2_magnesium
  <dbl>         <dbl>           <dbl>      <dbl>         <dbl>           <dbl>
1     1             2          -0.256      0.303             1          0.144 
2     2             2           2.18       0.417             1          0.0650
3     3             1           0.863     -2.32              1          0.163 
# ... with 1 more variable: Time2_zinc <dbl>

基于此:https://suzan.rbind.io/2018/02/dplyr-tutorial-2/#mutate-at-to-chang-specific-columns

 类似资料:
  • 我试图找出我的字符串是否包含从a到z的所有字母 我们可以通过其他方法解决这个问题,但我正在尝试仅使用模式和匹配器来解决它。

  • 本文向大家介绍C#程序来匹配字符串中的所有数字,包括了C#程序来匹配字符串中的所有数字的使用技巧和注意事项,需要的朋友参考一下 要匹配字符串中的所有数字,请使用C#正则表达式。 首先,设置一个数字字符串- 使用以下正则表达式获取字符串中的数字- 以下是代码- 示例 输出结果

  • 问题内容: 如何替换字符串中所有出现的内容? 如果要替换字符串中的所有换行符(\ n)。 这只会替换第一次出现的换行符 我不知道该怎么做? 问题答案: 使用全局标志。

  • 如何从R中的字符串中删除所有特殊字符并用空格替换它们? 要删除的一些特殊字符是:

  • 我试图检查字符串是否包含完全匹配。例如: String str="这是我的字符串,具有-Policy和-p" 我怎样才能做到以下几点:

  • 我有一些xml文件,希望删除除特定字符串以外的所有内容。 StackOverflow上还有很多类似的问题,但都不适用于我的文件,在尝试了几个小时不同的正则表达式后,我想寻求帮助。 到目前为止,部分成功但并非完全成功的最接近的正则表达式是: xml文件的示例: 我使用regex101,因此可以将示例粘贴在那里,以了解为什么rex只能部分工作。简而言之,它与第一次出现的不匹配,但与第二次出现的匹配。我