📅  最后修改于: 2023-12-03 15:04:45.443000             🧑  作者: Mango
在R中,使用收集函数可以将复杂的数据结构收集到一个更容易管理的格式中。在本文中,我们将介绍R中最常用的收集函数。
gather()
函数允许用户将数据从宽格式转换为长格式。以下是一个例子,它将宽格式的数据框转换为长格式:
library(tidyr)
df <- data.frame(x = c("A", "B"), y = c(1, 2), z = c(3,4))
gather(df, key = "key", value = "value", -x)
这里我们使用了tidyr
库中的gather()
函数,将df
数据框中除了x
列之外的所有列转换为长格式,并将它们存储在key
和value
列中。
pivot_longer()
函数也允许将数据从宽格式转换为长格式。它比gather()
函数更加灵活,可以一次性转换多列。以下是一个例子:
library(tidyr)
df <- data.frame(
id = c(1, 2),
q1 = c("yes", "no"),
q2 = c("maybe", "yes"),
q3 = c("no", "no")
)
pivot_longer(df, cols = c(q1, q2, q3), names_to = "question", values_to = "answer")
在这个例子中,我们使用pivot_longer()
函数将df
数据框中的q1
,q2
和q3
列转换为长格式,并将它们存储在question
和answer
列中。
与gather()
函数和pivot_longer()
函数相反,spread()
函数允许您将数据从长格式转换为宽格式。以下是一个例子:
library(tidyr)
df <- data.frame(
id = c(1, 1, 2, 2),
question = c("q1", "q2", "q1", "q2"),
answer = c("yes", "no", "no", "maybe")
)
spread(df, key = question, value = answer)
在这个例子中,我们可以看到如何使用spread()
函数将df
数据框转换为宽格式,其中question
列变成了q1
和q2
两列。
在收集函数中,separate()
函数是一个有用的工具,它可以将一个包含多个值的单元格拆分成多个列。以下是一个例子:
library(tidyr)
df <- data.frame(
name = c("John, Smith", "Jane, Doe"),
age = c(35, 28)
)
separate(df, col = name, into = c("first", "last"), sep = ", ")
在这个例子中,我们使用separate()
函数将name
列分解成first
和last
两列。
总结
收集函数是R中的强大工具,可以将数据从宽格式转换为长格式,或从长格式转换为宽格式,并将复杂的数据结构转换为更容易管理的格式。以上介绍的函数是R中最常用的收集函数。