R 如何拆分列并从中创建关系?
我是一个自学的程序员,我是一个新手 我试图在向量中创建组之间的关系。 下面是我用来实现目标的代码 必须有一种更快或更普遍的方法来实现这一目标R 如何拆分列并从中创建关系?,r,dataframe,ggplot2,grouping,tidyverse,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
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()
库(tidyverse)
mydf听起来像是来自dplyr
的bind\u cols
的任务
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
您也可以这样做:
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
#一个tible:5 x 3
身份证
*
1 1 0 5
2 2 1 6
3 3 2 7
4 4 3 8
5 5 4 9
newdf基本上是do.call('cbind',myspl)
对吧?你的解决方案很有效!非常感谢。
# 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