Dataframe 在R中提取值
我的数据集如下:Dataframe 在R中提取值,dataframe,Dataframe,我的数据集如下: | group | begin | end | | ----- | ----- | --- | | 001 | 1 | 1 | | 001 | 1 | 2 | | 001 | 2 | 6 | | 001 | 2 | 7 | 例如,第二行中的begin值为1,它与第一行中的end值相匹配,因此我从第一行为第二行提取值 生成的数据集如下所示: | group | begin | end | | -1
| group | begin | end |
| ----- | ----- | --- |
| 001 | 1 | 1 |
| 001 | 1 | 2 |
| 001 | 2 | 6 |
| 001 | 2 | 7 |
例如,第二行中的begin
值为1,它与第一行中的end
值相匹配,因此我从第一行为第二行提取值
生成的数据集如下所示:
| group | begin | end |
| -1 | 1 | 1 |
| 001 | 1 | 2 |
| 001 | 2 | 6 |
| 001 | 2 | 7 |
我尝试了
which()
和match()
,但它超出了我的R编程知识,我想知道如何实现它。在基本R中,我们可以匹配开始和结束列,以获得行号,从x
和y
列中提取值
df[c("base_x", "base_y")] <- df[match(df$begin, df$end), c("x", "y")]
df
# group begin end x y base_x base_y
#1 001 NA 1 0 0 NA NA
#2 001 1 2 15 18 0 0
#3 001 2 6 23 56 15 18
#4 001 2 7 11 19 15 18
#5 001 6 10 20 23 23 56
#6 001 10 11 18 19 20 23
df[c(“基x”,“基y”)]
df <- structure(list(group = c("001", "001", "001", "001", "001", "001"
), begin = c(NA, 1, 2, 2, 6, 10), end = c(1L, 2L, 6L, 7L, 10L,
11L), x = c(0L, 15L, 23L, 11L, 20L, 18L), y = c(0L, 18L, 56L,
19L, 23L, 19L)), row.names = c(NA, -6L), class = "data.frame")