首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加新列和新值

添加新列和新值
EN

Stack Overflow用户
提问于 2018-02-23 01:59:08
回答 2查看 92关注 0票数 0

我有一个名为" new“的表,我想将ManufactureDate中的年份提取到一个新的列”年份“中。

新美元制造商:

代码语言:javascript
复制
2014-01-01 
2016-01-01
2005-01-01
1997-11-01

创建一个新列," new“如下所示:

代码语言:javascript
复制
ManufactureDate    year
2014-01-01         2014
2016-01-01         2016
2005-01-01         2005
1997-11-01         1997

我的代码:

代码语言:javascript
复制
for (i in 1:nrow(new)){
  new["year"] <- NA
  new$year[i] <- strsplit(new$ManufactureDate, "-")[[i]][1]
  print(new$year[i])
}

结果:打印成功,但当我检查表格“新”时,它显示如下,不确定发生了什么:

代码语言:javascript
复制
ManufactureDate    year
2014-01-01         NA
2016-01-01         NA
2005-01-01         NA
1997-11-01         1997
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-23 02:04:09

实际上,我将投票反对创建“年度”专栏。如果使用的是实际日期列,则应从该现有列中提取年份,而不是取消数据或创建虚拟年份列。

代码语言:javascript
复制
df <- data.frame(ManufactureDate=as.Date(c("2014-01-01", "2016-01-01",
                                           "2005-01-01", "1997-11-01")))
format(df$ManufactureDate, "%Y")
[1] "2014" "2016" "2005" "1997"
票数 1
EN

Stack Overflow用户

发布于 2018-02-23 02:03:38

不需要for循环。除了到目前为止已经尝试过的(使用strsplit)之外,还有一种可能性:

代码语言:javascript
复制
new$year <- sapply(strsplit(as.character(new$ManufactureDate), "-"), "[[", 1);
#  ManufactureDate year
#1      2014-01-01 2014
#2      2016-01-01 2016
#3      2005-01-01 2005
#4      1997-11-01 1997

样本数据

代码语言:javascript
复制
new <- read.table(text =
    "ManufactureDate
    2014-01-01
2016-01-01
2005-01-01
1997-11-01", header = T)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48940026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档