gpt4 book ai didi

R:根据条件的行值填充data.frame中的新列?

转载 作者:行者123 更新时间:2023-12-02 11:11:31 25 4
gpt4 key购买 nike

我想根据行中的值在 data.frame 中创建新列。

如果“type”不等于“a”,我的“new.area”列应包含来自“a”类型的“area”的数据。这是针对多个“距离”的。

Example:

# create data frame
distance<-rep(seq(1,5, by = 1),2)
area<-c(11:20)
type<-rep(c("a","b"),each = 5)

# check data.frame
(my.df<-data.frame(distance, area, type))

distance area type
1 1 11 a
2 2 12 a
3 3 13 a
4 4 14 a
5 5 15 a
6 1 16 b
7 2 17 b
8 3 18 b
9 4 19 b
10 5 20 b

我想创建一个新列(my.df$new.area),其中对于行中的每个“距离”,都会有“a”类型的“区域”值。

   distance area type new.area
1 1 11 a 11
2 2 12 a 12
3 3 13 a 13
4 4 14 a 14
5 5 15 a 15
6 1 16 b 11
7 2 17 b 12
8 3 18 b 13
9 4 19 b 14
10 5 20 b 15

我知道如何手动为单行进行此操作:

my.df$new.area[my.df$distance == 1 ] <- 11

但是如何自动生成呢?

最佳答案

这是使用索引子集 ([) 和 match 的基本 R 解决方案:

my.df$new.area <- with(my.df, area[type == "a"][match(distance, distance[type == "a"])])

返回

my.df
distance area type new.area
1 1 11 a 11
2 2 12 a 12
3 3 13 a 13
4 4 14 a 14
5 5 15 a 15
6 1 16 b 11
7 2 17 b 12
8 3 18 b 13
9 4 19 b 14
10 5 20 b 15

area[type == "a"] 提供可能性向量。 match 用于通过距离变量返回此向量的索引。 with用于避免重复使用my.df$

关于R:根据条件的行值填充data.frame中的新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41062476/

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