首页 > 解决方案 > R - 数据框操作

问题描述

我有下表,如下所示

食物 油炸 煮沸
3 2
5 3

此数据框的代码是

Names = c("Food", "Fried", "Boiled")
Egg = c("Egg", 3, 2)
Fish = c("Fish", 5, 3)
df = as.data.frame(rbind(Egg, Fish)) 
colnames(df) = Names; rownames(df) = NULL

我想将 Dataframe 操作为以下

食物 炒/煮
油炸
油炸
油炸
煮沸
煮沸
油炸
油炸
油炸
油炸
油炸
煮沸
煮沸
煮沸

第 2 列“Fried/Boiled”分别为第一个表中的 Fried 和 Boiled 的每个值显示了一个新行。

提前致谢!

标签: rdataframegroup-byaggregatedata-manipulation

解决方案


这是否有效:

library(dplyr)
library(tidyr)
df %>% pivot_longer(cols = -Food) %>% type.convert(as.is = T) %>% uncount(value)
# A tibble: 13 x 2
   Food  name  
   <chr> <chr> 
 1 Egg   Fried 
 2 Egg   Fried 
 3 Egg   Fried 
 4 Egg   Boiled
 5 Egg   Boiled
 6 Fish  Fried 
 7 Fish  Fried 
 8 Fish  Fried 
 9 Fish  Fried 
10 Fish  Fried 
11 Fish  Boiled
12 Fish  Boiled
13 Fish  Boiled

推荐阅读