对于我的理学硕士论文,我正在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))
你们中有人有解决此问题的想法吗?预先感谢。
答案 0 :(得分:0)
这是使用来自新<div class="container-image-border">
<img alt="example" src="https://via.placeholder.com/150x250">
</div>
的{{1}}和pivot_longer
的解决方案:
pivot_wider
列名仍有改进的余地,但这应该带您大部分实现目标。
-
为了完整起见,这是一个完整的解决方案,其中包括对列名的自动化处理:
tidyr