R-使用其他变量的字符串信息对新变量进行突变

时间:2019-09-27 13:41:04

标签: r regex string mutate

对于我的理学硕士论文,我正在R中整理一个数据文件。在此文件中,有一些不在右列中的字符串值。我正在尝试对它们进行排序,或者更改新列,其中新列仅在与某个正则表达式匹配时才采用字符串。让我告诉你我的意思。为了说明的目的,我制作了以下数据框。在这里,要求4个人提供他们最喜欢的第一和第二种颜色和食物,或者如果他们只有一个喜欢的颜色和食物,则仅提供第一个(也可以提供NA)。但是,由于某些错误,答案在4列中混合在一起。

     df <- data.frame(person_ = c("Peter", "Lucas", "Jake", "Harry"), 
             note1 =c("1. Red", "2. Green", "1. Food: Hamburger", "1. Food: Pizza"), 
             note2 =c("1. Food: Pasta", "1. Blue", NA, "1. Yellow"),
             note3 =c("2. Food: Spaghetti", "2. Food: Chips", "1. Red", NA),
             note4 =c("2. Purple", "1. Food: Pancake", "2. White", NA))

我想知道如何订购这些产品。您可以通过'1来识别第一个和第二个收藏夹。 '和'2。 '。您可以通过“食物:”识别最喜欢的食物。这个事实立即使我认为我必须使用正则表达式。我已经考虑过了,并尝试了对新列进行突变,并从“ note1”,“ note2”,“ note3”或“ note4”列中选取了值并匹配了正则表达式。我没办法...

为了清楚起见,这是我最终想要的。

    df_1 <- data.frame(person_ = c("Peter", "Lucas", "Jake", "Harry"), 
               note1 =c("1. Red", "2. Green", "1. Food: Hamburger", "1. Food: Pizza"), 
               note2 =c("1. Food: Pasta", "1. Blue", NA, "1. Yellow"),
               note3 =c("2. Food: Spaghetti", "2. Food: Chips", "1. Red", NA),
               note4 =c("2. Purple", "1. Food: Pancake", "2. White", NA),
               fav1_color =c("Red", "Blue", "Red", "Yellow"),
               fav2_color =c("Purple", "Green", "White", NA),
               fav1_food =c("Pasta", "Pancake", "Hamburger", "Pizza"),
               fav2_food =c("Spaghetti", "Chips", NA, NA))

你们中有人有解决此问题的想法吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

这是使用来自新<div class="container-image-border"> <img alt="example" src="https://via.placeholder.com/150x250"> </div>的{​​{1}}和pivot_longer的解决方案:

pivot_wider

列名仍有改进的余地,但这应该带您大部分实现目标。

-

为了完整起见,这是一个完整的解决方案,其中包括对列名的自动化处理:

tidyr