[英]R: How to tidy data contained in a single column into separate columns?
我的数据框架不整洁:
name information
A 300 USD
A 70 kg
A 2 cm
B 400 USD
B 90 kg
B 5 cm
如何使用dplyr,tidyr和其他可能的包将“信息”列整理成单独的变量/列:USD,kg和cm?
这是所需的输出:
name USD kg cm
A 300 70 2
B 400 90 5
我们可以使用tidyr
separate/spread
。 separate
将“信息”列拆分为两列,然后通过spread
将“单位”更改为factor
类(如果列的顺序很重要),我们将其重新整形为“宽”格式。
library(dplyr)
library(tidyr)
separate(df1, information, into = c("value", "unit")) %>%
mutate(unit= factor(unit, levels =unique(unit))) %>%
spread(unit, value)
# name USD kg cm
#1 A 300 70 2
#2 B 400 90 5
df1 <- structure(list(name = c("A", "A", "A", "B", "B", "B"), information = c("300 USD",
"70 kg", "2 cm", "400 USD", "90 kg", "5 cm")), .Names = c("name",
"information"), class = "data.frame", row.names = c(NA, -6L))
这是使用tidyr传播的另一个例子:
假设我们有一个数据框df,其中包含'id','date','element'和'measurement'的列:
DF
id date element measurement
01 2018-02-06 tmax 55
01 2018-02-06 tmin 51
这个数据框不整齐,因为同一个id'01'有2行,我们应该只有1行。 我们可以使用'spread'来跨列传播值'tmax'和'tmin'。
df%>%spread(key = element,value = measurement)
id date tmax tmin
01 2018-02-06 55 51
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.