r - 如何使用从 R 中的现有列中提取的名称将列添加到 data.frame?
问题描述
我有DF
data.frame
. 我想在column
(i.e., call it station_no)
之后添加另一个。extrac
number
underscore
Variables column
library(lubridate)
library(tidyverse)
set.seed(123)
DF <- data.frame(Date = seq(as.Date("1979-01-01"), to = as.Date("1979-12-31"), by = "day"),
Grid_2 = runif(365,1,10), Grid_20 = runif(365,5,15)) %>%
pivot_longer(-Date, names_to = "Variables", values_to = "Values")
期望的输出:
DF_out <- data.frame(Date = c("1979-01-01","1979-01-01"),Variables = c("Grid_2","Grid_20"),
Values = c(0.95,1.3), Station_no = c(2,20))
解决方案
简单的选项是parse_number
返回数字转换值
library(dplyr)
DF %>%
mutate(Station_no = readr::parse_number(Variables))
或者使用str_extract
(如果我们想按照模式)
library(stringr)
DF %>%
mutate(Station_no = str_extract(Variables, "(?<=_)\\d+"))
或使用base R
DF$Station_no <- trimws(DF$Variables, whitespace = '\\D+')
推荐阅读
- laravel-5.6 - 如何在 Laravel 中将 .zip 文件上传到服务器(ubuntu 操作系统)?
- php - HTML 下拉列表中的文本换行
- ios - Swift:向下转换硬拷贝对象,获得实例变量的默认值?
- ios - Ad Hoc 分发 Xcode 10,应用程序无法正常工作
- php - “表中没有可用数据”即使表中存在数据
- python - Word2vec Gensim 精度分析
- javascript - 是否可以在 for() 循环中使用 await ?
- node.js - Kinesis 到 S3 没有使用 nodejs lambda 的 firehose
- matlab - 这个橙色点在 ROC 图中代表什么?
- php - 如何对两个输入字符串进行文件检查?