我是R编程的新手,已经搜索了很多小时。我很感激你的帮助。
我有一个数据框,有3列(日期,描述,借记)
l <- lapply(a$Description, function(x) {substr(x, nchar(x)-2+1, nchar(x))})
我试图提取第二个(描述)列的最后2个字符(即2个字母的州名缩写)。我对应用类型函数不太满意。
我尝试过使用
Error in nchar(x) : invalid multibyte string, element 1
但是收到以下错误消息
fee_chart
我尝试了多种其他方法,但遇到了同样的错误。
我很确定我遗漏了一些非常基本的东西,所以非常感谢你的帮助
谢谢
答案 0 :(得分:5)
library(stringr)
str_sub(a$Description,-2,-1)
答案 1 :(得分:0)
df <- data.frame(date = c("2015-01-01", "2015-02-01", "2015-01-15"),
jumble = c("12345 VA", "123 FL", "12354567732 GA"),
debit = c(15, 36, 20))
df$jumble <- as.character(df$jumble)
df$state <- substr(df$jumble, nchar(df$jumble)-1, nchar(df$jumble))
df
date jumble debit state
1 2015-01-01 12345 VA 15 VA
2 2015-02-01 123 FL 36 FL
3 2015-01-15 12354567732 GA 20 GA
答案 2 :(得分:0)
这是一个正则表达式版本,使用Brandon S的示例数据。正则表达式捕获最后一个空白字符后的所有内容到字符串的末尾。
df <- data.frame(date = c("2015-01-01", "2015-02-01", "2015-01-15"),
jumble = c("12345 VA", "123 FL", "12354567732 GA"),
debit = c(15, 36, 20))
df$state <- gsub(".+\\s(.+)$", "\\1", df$jumble)
df
date jumble debit state
1 2015-01-01 12345 VA 15 VA
2 2015-02-01 123 FL 36 FL
3 2015-01-15 12354567732 GA 20 GA
答案 3 :(得分:0)
我们可以使用sub
df$State <- sub(".*\\s+", "", df[,2])
df$State
#[1] "VA" "FL" "GA"
答案 4 :(得分:0)
一种更优雅的方式:
df['Description'].str[-2:]
我假设您的描述列为字符串类型(或对象类型)。