R 两个简单的问题,我无法回答';t以简单的方式解决:

R 两个简单的问题,我无法回答';t以简单的方式解决:,r,dplyr,data-manipulation,R,Dplyr,Data Manipulation,1-)如果我有一个表示月份的列(M1,M2,M3,M4..M1…M1,M2,…),如何使用一个函数来替换(01,02,03,04…)? 我曾尝试使用“突变”和“替换”组合,但没有成功。它只是与ifelse函数一起工作,但它非常大 我的第二个问题: 如果我有一个包含很多字符名的列,如何在该列中过滤10个以上的名称 我尝试过筛选(column==c(“xx”,“xy”…),但筛选结果不正确,我得到了以下消息:较长的对象长度不是较短对象长度的倍数 dat %>% mutate(month_

1-)如果我有一个表示月份的列(M1,M2,M3,M4..M1…M1,M2,…),如何使用一个函数来替换(01,02,03,04…)? 我曾尝试使用“突变”和“替换”组合,但没有成功。它只是与ifelse函数一起工作,但它非常大

我的第二个问题:

如果我有一个包含很多字符名的列,如何在该列中过滤10个以上的名称


我尝试过筛选(column==c(“xx”,“xy”…),但筛选结果不正确,我得到了以下消息:较长的对象长度不是较短对象长度的倍数

dat %>% 
  mutate(month_column = recode(month,
                               "M1" = "01",
                               "M2" = "02",
                               ...
                               "M12" = "12"))
请注意,我将它们作为字符串输入,因为这是获取前导零的方式

你的第二个问题还不清楚,但你想做的似乎是列出10个名字(总共10+n个名字),并且只列出这些名字的子集?如果是这种情况,您可以将
filter()
与%运算符中的
%一起使用

dat %>%
  filter(name_column %in% c("xx", "xy", ... ))
还可以提取管道外部的向量:

vector_of_names <- c("xx", "xy", ... )
dat %>% filter(name_column %in% vector_of_names)

在寻求帮助时,您应该包括一个简单的示例输入和所需的输出,用于测试和验证可能的解决方案。对于问题2,请查看%
match()
函数中的
%。
dat %>%
  filter(name_column %in% c("xx", "xy", ... )) %>%
  mutate(month_column = recode(month,
                               "M1" = "01",
                               "M2" = "02",
                               ...
                               "M12" = "12"))