【问题标题】:How can I tidy this data set step by step?如何逐步整理这个数据集?
【发布时间】:2018-02-28 01:15:36
【问题描述】:

我是一名数据分析初学者,目前正在学习如何在 DataCamp 中使用 R。我正在整理一个名为 irsi 的数据集,可以在 R Studio 中找到。我想知道如何逐步清理此数据集,如下所示:

原文:

head(iris)
   Species     Sepal.Length Sepal.Width  Petal.Length Petal.Width
1  setosa          5.1         3.5          1.4         0.2
2  setosa          4.9         3.0          1.4         0.2
3  setosa          4.7         3.2          1.3         0.2
4  setosa          4.6         3.1          1.5         0.2
5  setosa          5.0         3.6          1.4         0.2
6  setosa          5.4         3.9          1.7         0.4

第 1 步:

> head(iris.wide)
  Species Part   Length Width
1  setosa Petal    1.4   0.2
2  setosa Petal    1.4   0.2
3  setosa Petal    1.3   0.2
4  setosa Petal    1.5   0.2
5  setosa Petal    1.4   0.2
6  setosa Petal    1.7   0.4

第 2 步:

head(iris.tidy)
  Species Part  Measure Value
1  setosa Sepal  Length   5.1
2  setosa Sepal  Length   4.9
3  setosa Sepal  Length   4.7
4  setosa Sepal  Length   4.6
5  setosa Sepal  Length   5.0
6  setosa Sepal  Length   5.4

如果有什么我没有明确提及的,请随时告诉我。 任何建议将不胜感激,谢谢!

【问题讨论】:

  • 是从宽变长的情况。尝试library(data.table);melt(setDT(iris), measure = patterns("Length", "Width"), value.name = c("Length", "Width")) 并进行一些更改

标签: r dataset tidyr


【解决方案1】:

这是tidyverse 解决方案:

head(iris) %>%
    unite(Sepal, Sepal.Length, Sepal.Width) %>%
    unite(Petal, Petal.Length, Petal.Width) %>%
    gather(Part, Value, 1:2) %>%
    separate(Value, into = c("Length", "Width"), sep = "_") %>% # <-- Step 1
    gather(Measure, Value, 3:4)                                 # <-- Step 2

或更快:

head(iris) %>% 
    gather(key, value, 1:4) %>% 
    separate(key, into = c("Part", "Measure"))

由于您正在学习如何操作/整理数据,因此我强烈建议您逐步进行此操作,以了解每个操作的作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多