gpt4 book ai didi

r - 搜索带条件的行并更改它们

转载 作者:行者123 更新时间:2023-12-05 02:30:27 26 4
gpt4 key购买 nike

我有以下数据框

head(ca.spe)

Dataset recording_date grid_cell
1 2 September 1987 7914/2
2 1 September 1937 8025/3
3 1 September 1933 8114/1
4 1 September 1926 8021/4
5 1 September 1926 8021/4
6 1 September 1865 7522/21

在这个数据框中有一些行,我想改变。

网格单元格的行在/之后有两个或三个数字需要更改。

例如第 6 行有 7522/21

我想将此行转换为 7522/1 和 7522/2 两行,该行的所有其他信息都应保持不变。

运行结果应该是这样的:

head(ca.spe)

Dataset recording_date grid_cell
1 2 September 1987 7914/2
2 1 September 1937 8025/3
3 1 September 1933 8114/1
4 1 September 1926 8021/4
5 1 September 1926 8021/4
6 1 September 1865 7522/1
7 1 September 1865 7522/2

有人知道怎么做吗?

干杯迈克

最佳答案

这是 tidyverse 的一个选项 - separate 通过在 / 处拆分列 'grid_cell' 一分为二,然后通过拆分创建行在“grid_cell2”列中的每个字符(或数字)之间,最后联合“grid_cell”列以创建“grid_cell”列

library(dplyr)
library(tidyr)
ca.spe %>%
separate(grid_cell, into = c("grid_cell1", "grid_cell2"), sep = "/") %>%
separate_rows(grid_cell2, sep = "(?<=.)(?=.)") %>%
unite(grid_cell, starts_with('grid_cell'), sep = "/")

-输出

# A tibble: 7 × 3
Dataset recording_date grid_cell
<int> <chr> <chr>
1 2 September 1987 7914/2
2 1 September 1937 8025/3
3 1 September 1933 8114/1
4 1 September 1926 8021/4
5 1 September 1926 8021/4
6 1 September 1865 7522/2
7 1 September 1865 7522/1

数据

ca.spe <- structure(list(Dataset = c(2L, 1L, 1L, 1L, 1L, 1L), 
recording_date = c("September 1987",
"September 1937", "September 1933", "September 1926", "September 1926",
"September 1865"), grid_cell = c("7914/2", "8025/3", "8114/1",
"8021/4", "8021/4", "7522/21")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))

关于r - 搜索带条件的行并更改它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71846853/

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