На самом деле это самая простая вещь в R:
data:
df1 <- data.frame(boys_age = c(18,15,16,17,19), girls_age = c(16,14,18,17,15))
code:
library(data.table)
melt(setDT(df1), variable.name = "group", value.name = "age", measure.vars = c("boys_age", "girls_age"))[,2:1][,group:=sub("_.*$","",group)][]
result:
# age group
# 1: 18 boys
# 2: 15 boys
# 3: 16 boys
# 4: 17 boys
# 5: 19 boys
# 6: 16 girls
# 7: 14 girls
# 8: 18 girls
# 9: 17 girls
#10: 15 girls
Кажется, вы заинтересованы в использовании ?rbind
: (хотя это не практично)
rbind(
cbind.data.frame(age = df1$boys_age, group = "boys"),
cbind.data.frame(age = df1$girls_age, group = "girls")
)
# age group
#1 18 boys
#2 15 boys
#3 16 boys
#4 17 boys
#5 19 boys
#6 16 girls
#7 14 girls
#8 18 girls
#9 17 girls
#10 15 girls
- В разделе
?cbind
я использую функцию утилизации Rобеспечивает.Читайте об этом. - Почему я использую
cbind.data.frame
, иначе cbind создаст матрицу и, следовательно, числа возраста будут преобразованы в символы.