gpt4 book ai didi

r - 在数据帧中将时变变量设置为其初始值

转载 作者:行者123 更新时间:2023-12-05 04:30:08 25 4
gpt4 key购买 nike

我有这个数据框,其中有美国各州不同时间段的人口数据,我想将每个州的人口设置为其初始值,因为我需要这个变量与时间无关。

这是我的数据集:

state <- c(Alabama, Alabama, Alabama, Arkansas, Arkansas, Arkansas, Arkansas)
year<- c(1990, 1991, 1992, 2002, 2003, 2005, 2011)
population <- c(10000, 11000, 12000, 23000, 24000, 25000, 30000)
df <- data.frame( state, year, population)

我想获得这个(只有“人口”的变化):

state <- c(Alabama, Alabama, Alabama, Arkansas, Arkansas, Arkansas, Arkansas)
year<- c(1990, 1991, 1992, 2002, 2003, 2005, 2011)
population <- c(10000, 10000, 10000, 23000, 23000, 23000, 23000)
df <- data.frame( state, year, population)

这只是我完整数据集的一小部分,所以我需要一个代码来不经常更改州的名称。

谢谢!

最佳答案

我们可以获取每个州的第一个值,并使用 first 将其设置为人口。

library(dplyr)

df %>%
group_by(state) %>%
mutate(population = first(population))

输出

  state     year population
<chr> <dbl> <dbl>
1 Alabama 1990 10000
2 Alabama 1991 10000
3 Alabama 1992 10000
4 Arkansas 2002 23000
5 Arkansas 2003 23000
6 Arkansas 2005 23000
7 Arkansas 2011 23000

或者可以写成:

df %>%
group_by(state) %>%
mutate(population = population[1])

或者使用data.table:

library(data.table)
dt <- as.data.table(df)

dt[, population := population[1], by = state]

或以 R 为基数:

df[, "population"] <-
sapply(df["population"], function(z)
ave(z, df$state, FUN = function(y) y[1]))

数据

df <- structure(list(state = c("Alabama", "Alabama", "Alabama", "Arkansas", 
"Arkansas", "Arkansas", "Arkansas"), year = c(1990, 1991, 1992,
2002, 2003, 2005, 2011), population = c(10000, 11000, 12000,
23000, 24000, 25000, 30000)), class = "data.frame", row.names = c(NA,
-7L))

关于r - 在数据帧中将时变变量设置为其初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72145387/

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