我正在总结一个巨大的数据帧,其中包含7000多个非数字值。
下面是一个我试图用这些数据做什么的例子。
人员 | 描述 | 首字母 | tbody>
---|---|---|
Jake | Info1 | JK |
Jake | Info2 | JK | upiter//tr>
Sam | Info1 | SP | >Saturn
Sam | Info2 | P|
Sam | Info3 | SP | >Mars
您可以使用summary、粘贴和折叠:
test <- read.table(
text = "Person Description Initials Locations
Jake Info1 JK Mars
Jake Info2 JK Jupiter
Sam Info1 SP Saturn
Sam Info2 SP Earth
Sam Info3 SP Mars", sep = 't', header = TRUE, fill = TRUE)
library(tidyverse)
test %>%
group_by(Person, Initials) %>%
summarise(Description = paste(Description, collapse = ","),
Locations = paste(Locations, collapse = ","))
#> `summarise()` regrouping output by 'Person' (override with `.groups` argument)
#> # A tibble: 2 x 4
#> # Groups: Person [2]
#> Person Initials Description Locations
#> <chr> <chr> <chr> <chr>
#> 1 Jake JK Info1,Info2 Mars,Jupiter
#> 2 Sam SP Info1,Info2,Info3 Saturn,Earth,Mars
但要注意,你基本上是在制造你的数据;"不整洁"。。。
您可以使用aggregate()
:
~
的rhs上的变量是分组变量,而.
表示"测试"数据帧中的所有其他变量。其他传递的参数CCD_ 4和CCD_。
aggregate(.~Person+Initials, test, paste, collapse=" ; ")
## Person Initials Description Locations
## 1 Jake JK Info1 ; Info2 Mars ; Jupiter
## 2 Sam SP Info1 ; Info2 ; Info3 Saturn ; Earth ; Mars
它产生了与其他提出的解决方案相同的结果:
res_Tjebo <- test %>%
group_by(Person, Initials) %>%
summarise(Description = paste(Description, collapse = ","),
Locations = paste(Locations, collapse = ",")) %>%
ungroup()
res_jwarz <- test %>%
aggregate(
.~Person+Initials,
.,
paste, collapse=",") %>%
as_tibble()
identical(res_Tjebo, res_jwarz)
## [1] TRUE