繁体   English   中英

如何使用lapply添加多个列? [重复]

How to add multiple columns using lapply? [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这个问题已经在这里有了答案:

我有一个数据表,如下所示:

dt=data.table(
id=c(1,2,3,4,5,6),
date=c("28 Jul 2009","31 Jul 2009","31 Jul 2009","04 Aug 2009","10 Aug 2009","06 Aug 2009")       
)

我想在此列中增加三列日,月,年。

dt[,day:=unlist(strsplit(date,"\\ "))[1]]
dt[,month:=unlist(strsplit(date,"\\ "))[2]]
dt[,year:=unlist(strsplit(date,"\\ "))[3]]

但这只是将所有具有相同拆分的列附加到第一行。

所以我尝试了

dt[,day:=lapply(date,function (x) {unlist(strsplit(x,"\\ "))[1]}),]
dt[,month:=lapply(date,function (x) {unlist(strsplit(x,"\\ "))[2]}),]
dt[,year:=lapply(date,function (x) {unlist(strsplit(x,"\\ "))[3]}),]

起作用了。 但是如何将所有内容合并为一行而不是3行以及其他任何efficeint方法。

3 个回复

您还需要数据表包中的tstrsplit() help(tstrsplit)“使用strsplit拆分列并将转置结果分配给各个列一种便捷的包装函数”。

dt[, c("day", "month", "year") := tstrsplit(date, " ")]

dt
#    id        date day month year
# 1:  1 28 Jul 2009  28   Jul 2009
# 2:  2 31 Jul 2009  31   Jul 2009
# 3:  3 31 Jul 2009  31   Jul 2009
# 4:  4 04 Aug 2009  04   Aug 2009
# 5:  5 10 Aug 2009  10   Aug 2009
# 6:  6 06 Aug 2009  06   Aug 2009

您可以使用库lubridate和dplyr轻松完成此操作

library(data.table)
dt=data.table(
  id=c(1,2,3,4,5,6),
  date=c("28 Jul 2009","31 Jul 2009","31 Jul 2009","04 Aug 2009","10 Aug 2009","06 Aug 2009")       
)
str(dt)

library(lubridate)
dt$date<- dmy(dt$date)
library(dplyr)
mutate(dt, day= day(dt$date),month = month(dt$date),year = year(dt$date))

问题是您的[1]索引采用18个元素中的第一个,而不是6个元素列表中的每个。

dt[,day := sapply(strsplit(date, "\\s"), `[[`, 1),]
dt
#    id        date day
# 1:  1 28 Jul 2009  28
# 2:  2 31 Jul 2009  31
# 3:  3 31 Jul 2009  31
# 4:  4 04 Aug 2009  04
# 5:  5 10 Aug 2009  10
# 6:  6 06 Aug 2009  06
1 向数据框添加多个列[重复]

可能重复: 如何在R(内,外,左,右)中连接数据框? 合并两个数据框并删除重复的列 如何向数据框添加多个列? 我有一个由189行和35列组成的现有数据帧( dataframe.X )。 为此,在第35列之后,我想在一个单独的数据帧( dataframe.Y )中添加1 ...

2 添加多个列并删除重复项

我父亲拥有一家批发商店,大多数发票都来自Excel。 问题通常是需要花费大量时间手动编辑文件以对列进行求和(手动完成)。 目前我这样做: 创建新行。 Sum(Range)然后用值覆盖它,删除原件。 数据: 有没有办法让我可以得到总和A(盒子数),Col D(个人 ...

3 使用 lapply 添加动态列

以下使用lapply添加一列,我想知道是否有可能与添加动态列lapply 。 我想为列表中的每个数据框的新列添加不同的值: 在上面的问题中,我们在所有数据帧中添加了一个常量值 要从bvalues动态添加值,我尝试过: 但得到了错误 这似乎是lapply调用有多个输入的问题,但我不知道 ...

2020-06-03 15:36:14 1 47   r
4 使用multiindex同时添加多个列

我有一个具有可变列数的数据框,并且在MultiIndex中处理了这些列。 我正在尝试将多个列添加到同一MultiIndex结构中 我试图添加新列,就像如果只有一个列但无法正常工作一样 我已经试过了: df = pd.DataFrame(np.random.rand(4,2), c ...

5 SQLite使用for循环添加多个列

我正在尝试创建一个SQL数据库,其中将有许多列(大约4030)。 因此我不能使用 每列。 现在,我尝试执行多个ALTER TABLE操作,但我知道, ADD分支中没有循环,因此不允许重复。 所以我尝试了另一种方法来实现我的表。 我试过了, 我在下面编写的代码。 我 ...

6 如何使用purrr添加多列? [复制]

这个问题在这里已经有了答案: 改变数据框中的多列6 个回答 去年关闭。 我正在寻找一种整洁的方式来执行以下操作: ...

2020-07-31 02:25:28 1 105   r/ purrr
7 如何使用panda for python同时添加多个列

我目前正在使用python抓取每个NBA球员的三点统计数据,并试图将这些数据放在一个数据框中。 下面的代码是我尝试将值添加到数据框中的尝试。 变量players,teams,threePointAttempts和ThreePointPercentage都是包含50个值的列表。 在while ...

8 如何使用UDF添加多个列?

题 我想将UDF的返回值添加到单独列中的现有数据框中。 我如何以足智多谋的方式实现这一目标? 这是我到目前为止所拥有的一个例子。 现在我可以按如下方式向数据框添加一列 但是我不希望这两个值在同一列中,而是在单独的列中。 理想情况下,我现在要分割输出列,以避免调 ...

9 使用Google Maps API添加多个标记[重复]

这个问题已经在这里有了答案: Google Maps JS API v3-简单多个标记示例 12个答案 我正在尝试将Google Maps API用于网站,但似乎无法像Google在其示例中那样填充多个位置。 谁能让我知道我需要添加些什么才能显示11个标记,这 ...

10 似乎无法使用phpmyadmin向我的数据库添加多个列[重复]

这个问题在这里已有答案: 在MySQL 8中 的特定列之后添加多个列 我现在只是第一次使用SQL而且我一直在尝试将新列添加到现有表中以进行学生注册表交易。 我已经在网上看了几个教程,他们都指向我到目前为止所做的一切,基本上是这样的: 基于我读过的东西和 ...

2019-03-28 09:01:25 2 21   mysql/ sql
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM