gpt4 book ai didi

R 数据操作。查找列值并进行操作

转载 作者:行者123 更新时间:2023-12-01 16:07:12 24 4
gpt4 key购买 nike

我有一个像这样的数据框,其中第 1 列具有不同的值并以国家/地区结尾。

Col1     col2  Col3  col4 
A 0 0 1
B 1 0 3
c 4 0 6
D 5 6 7
China na na na
A 0 1 3
B 2 4 5
C 3 5 6
D 1 2 3
E 5 3 3
England na na na

我想要实现如下所示的目标,因此我需要创建一个新列,其中操作国家/地区名称,直到国家/地区名称所在的行匹配。

Col1     col2  Col3  col4 col5
A 0 0 1 China
B 1 0 3 china
c 4 0 6 china
D 5 6 7 china
China na na na china
A 0 1 3 England
B 2 4 5 England
C 3 5 6 England
D 1 2 3 England
E 5 3 3 England
England na na na England

...另外我还有其他 40 个国家/地区可以合作。我是 R 新手,正在为如何实现我想要的结果而苦苦挣扎。

最佳答案

首先创建数据结构(将来您应该在问题中提供用于执行此操作的代码)。

exd <- read.table(text = "Col1     col2  Col3  col4 
A 0 0 1
B 1 0 3
c 4 0 6
D 5 6 7
China NA NA NA
A 0 1 3
B 2 4 5
C 3 5 6
D 1 2 3
E 5 3 3
England NA NA NA", header = TRUE)

接下来,找出哪些行是国家/地区边界,并提取国家/地区名称

country_boundary <- nchar(as.character(exd$Col1)) > 1
country_names <- exd$Col1[country_boundary]

然后为每个国家/地区生成代码,移位一位。

country_number <- c(0, cumsum(country_boundary)[-nrow(exd)])

最后,使用 country_numbercountry_names 向量创建国家/地区 ID 列。

exd <- data.frame(exd,
Col5 = factor(country_number,
labels = country_names))

您可能希望删除(现在是多余的)边界行:

exd <- exd[!country_boundary, ]
exd
# Col1 col2 Col3 col4 Col5
# 1 A 0 0 1 China
# 2 B 1 0 3 China
# 3 c 4 0 6 China
# 4 D 5 6 7 China
# 6 A 0 1 3 England
# 7 B 2 4 5 England
# 8 C 3 5 6 England
# 9 D 1 2 3 England
# 10 E 5 3 3 England

关于R 数据操作。查找列值并进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318637/

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