gpt4 book ai didi

r - R中的数据转换

转载 作者:行者123 更新时间:2023-12-01 09:26:43 25 4
gpt4 key购买 nike

我正在寻找一个用于转换数据框的 R 示例。我有一个包含 100 行的数据框(每个美国州 2 行)

     Status  State Count 
default AK 15
nodefault AK 71
default AL 56
nodefault AL 428
default AR 33
nodefault AR 228
default AZ 132
nodefault AZ 801
......
......

我想要的转换是一个有 50 行的数据框:

      State Count1  Count2 
AK 15 71
AL 56 428
AR 33 228
AZ 132 801
....

您能建议任何 R 函数来进行这种转换吗?

我尝试使用“聚合”功能。但是,它需要一个参数,例如:'mean' OR 'Sum',我不想要 mean 或 sum。

感谢您提供的任何帮助。

最佳答案

这里有几种可能性:

1) xtabs

> xtabs(Count ~ State + Status, DF)
Status
State default nodefault
AK 15 71
AL 56 428
AR 33 228
AZ 132 801

2) 点按

> tapply(DF[[3]], DF[2:1], c)
Status
State default nodefault
AK 15 71
AL 56 428
AR 33 228
AZ 132 801

3) reshape

> reshape(data = DF, dir = "wide", idvar = "State", timevar = "Status")
State Count.default Count.nodefault
1 AK 15 71
3 AL 56 428
5 AR 33 228
7 AZ 132 801
reshape2 包中的

dcast 是另一种可能的工作方式,有点像 reshape

4) read.zoo

> library(zoo)
>
> read.zoo(DF, index = "State", split = "Status", FUN = identity)
default nodefault
AK 15 71
AL 56 428
AR 33 228
AZ 132 801

5) 拆分/合并

> do.call("merge", c(unname(split(DF, DF$Status)), by = 2))[c(-2, -4)]
State Count.x Count.y
1 AK 15 71
2 AL 56 428
3 AR 33 228
4 AZ 132 801

这也可以表示为:

s <- split(DF, DF$Status)
merge(s[[1]], s[[2]], by = 2)[c(-2, -4)]

with(split(DF, DF$Status), merge(default, nodefault, by = 2))[c(-2, -4)]

添加解决方案 5.

关于r - R中的数据转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com