R 如何在跳过第1列和第3行的同时删除()中的所有内容

R 如何在跳过第1列和第3行的同时删除()中的所有内容,r,R,我有一个data.frame,看起来像这样: 我想从col2-3中删除()中的任何内容并跳过第3行。我该怎么办。 目前我可以为col部分做部分,但不知道如何跳过第3行。这是我的密码: 可以使用以下代码生成示例数据: df<-structure(list(Name = c("Patient Number", "Patients with fever", "AEDECOD", "DIARRHOEA", &quo

我有一个data.frame,看起来像这样:

我想从col2-3中删除
()
中的任何内容并跳过第3行。我该怎么办。 目前我可以为col部分做部分,但不知道如何跳过第3行。这是我的密码:

可以使用以下代码生成示例数据:

df<-structure(list(Name = c("Patient Number", "Patients with fever", 
"AEDECOD", "DIARRHOEA", "NAUSEA"), Score1 = c("159 (100%)", "159", 
"Total", "131 (82.39%)", "92 (57.86%)"), Score2 = c("3", "3", 
"test2", "2 (66.67%)", "2 (66.67%)"), Score3 = c("3", "3", "test3", 
"2 (66.67%)", "1 (33.33%)")), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

df编辑:我遗漏了问题的“跳过第3行”部分,部分原因是它仍在示例输出中,因此不清楚您的意思。我在问题的末尾添加了一个过滤器

您使用
mutate(cross())
的想法是正确的。您可以使用
gsub
替换“括号中的空格后跟任何内容”:

结果。请注意,这些列是字符类型,因为您有混合文本+数字。删除第3行后,您可能希望使用
as.numeric()
进行
变异

# A tibble: 5 x 4
  Name                Score1 Score2 Score3
  <chr>               <chr>  <chr>  <chr> 
1 Patient Number      159    3      3     
2 Patients with fever 159    3      3     
3 AEDECOD             Total  test2  test3 
4 DIARRHOEA           131    2      2     
5 NAUSEA              92     2      1 
结果:

# A tibble: 4 x 4
  Name                Score1 Score2 Score3
  <chr>                <dbl>  <dbl>  <dbl>
1 Patient Number         159      3      3
2 Patients with fever    159      3      3
3 DIARRHOEA              131      2      2
4 NAUSEA                  92      2      1
#一个tible:4 x 4
姓名分数1分数2分数3
1病人编号1593 3
2名发烧病人1593 3
3腹泻131 2
4.922.1
df %>% 
  mutate(across(starts_with("Score"), ~gsub("\\s+\\(.*?\\)", "", .x))) %>%
  # or slice(-3) instead of next line %>%
  filter(Name != "AEDECOD") %>% 
  mutate(across(starts_with("Score"), ~as.numeric(.x)))
# A tibble: 4 x 4
  Name                Score1 Score2 Score3
  <chr>                <dbl>  <dbl>  <dbl>
1 Patient Number         159      3      3
2 Patients with fever    159      3      3
3 DIARRHOEA              131      2      2
4 NAUSEA                  92      2      1