如何拆分列并从中创建关系?

时间:2017-10-27 20:56:42

标签: r dataframe ggplot2 grouping tidyverse

我是一名自学程序员,我是新手。

我试图在向量中创建组之间的关系。 下面是我用来实现目标的代码。

必须有更快捷或更通用的方法来实现这一目标。

library(tidyverse)

mydf <- tibble(nums = seq(0,9, by = 1), 
               ltrs = rep(c("a","b"), each = 5))

myspl <- split(mydf, mydf$ltrs)

ltrsA <- myspl[["a"]]$ltrs
ltrsB <- myspl[["b"]]$ltrs

numsA <- myspl[["a"]]$nums
numsB <- myspl[["b"]]$nums

newdf <- tibble(numsA, ltrsA, numsB, ltrsB)
newdf

ggplot(newdf, aes(numsA, numsB)) + geom_point()

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

听起来像是来自bind_cols的{​​{1}}的任务。

dplyr

我们还可以在library(tidyverse) mydf <- tibble(nums = seq(0,9, by = 1), ltrs = rep(c("a","b"), each = 5)) myspl <- split(mydf, mydf$ltrs) bind_cols(myspl) # A tibble: 5 x 4 nums ltrs nums1 ltrs1 <dbl> <chr> <dbl> <chr> 1 0 a 5 b 2 1 a 6 b 3 2 a 7 b 4 3 a 8 b 5 4 a 9 b 之后更改列名。

bind_cols

答案 1 :(得分:2)

你也可以这样做:

library(tidyverse)

mydf %>%
  group_by(ltrs) %>%
  mutate(ID = 1:n()) %>%
  spread(ltrs, nums) %>%
  ggplot(aes(a, b)) + geom_point()

<强>结果:

# A tibble: 5 x 3
     ID     a     b
* <int> <dbl> <dbl>
1     1     0     5
2     2     1     6
3     3     2     7
4     4     3     8
5     5     4     9

enter image description here