R 月份错误。abb[]:仅0';s可以与负下标混合
我想把数字转换成月份;对于大于12的数字,请在月份前添加“第二年”。数据如下:R 月份错误。abb[]:仅0';s可以与负下标混合,r,data.table,data-wrangling,R,Data.table,Data Wrangling,我想把数字转换成月份;对于大于12的数字,请在月份前添加“第二年”。数据如下: 库(tidyverse) 库(数据表) 图书馆(dplyr) rg1)fifelse将在每个月的所有注册值下对两条腿进行评估。如果不希望对两个支腿进行计算,或确保下标在month.abb内对所有注册值有效,请避免使用fifelse或ifelse 这种方法只能使用ifelse设置“第二年”字符串 3)或在每个分支中将注册月份替换为(注册月份-1)%%12+1,以将所有值映射到1-12范围 rg[,.(month_rg2
库(tidyverse)
库(数据表)
图书馆(dplyr)
rg1)fifelse将在每个月的所有注册值下对两条腿进行评估。如果不希望对两个支腿进行计算,或确保下标在month.abb内对所有注册值有效,请避免使用fifelse或ifelse
这种方法只能使用ifelse设置“第二年”字符串
3)或在每个分支中将注册月份
替换为(注册月份-1)%%12+1
,以将所有值映射到1-12范围
rg[,.(month_rg2 = fifelse(registration_month<= 12,
month.abb[(registration_month - 1) %% 12 + 1],
paste0("2nd Year ", month.abb[(registration_month - 1) %% 12 + 1])))]
rg[,(month\u rg2=fifelse(registration\u month也许,你可以试试这个-
library(data.table)
rg[, month_rg2 := month.abb[fifelse(registration_month<= 12,
registration_month, registration_month - 12)]]
rg[registration_month > 12 , month_rg2 := paste('2nd year', month_rg2)]
rg
id registration_month region operating_system month_rg2
# 1: id_10033 1 EMEA Windows Jan
# 2: id_10050 1 ROW Unknown Jan
# 3: id_10054 1 EMEA Windows Jan
# 4: id_10080 1 ROW Unknown Jan
# 5: id_10098 1 ROW Windows Jan
# ---
#40122: id_9868 21 EMEA Mac 2nd year Sep
#40123: id_9885 21 ROW Unknown 2nd year Sep
#40124: id_9888 21 ROW Windows 2nd year Sep
#40125: id_9905 21 ROW Unknown 2nd year Sep
#40126: id_9919 21 America Windows 2nd year Sep
库(data.table)
rg[,month_rg2:=month.abb[fifelse(注册第12个月,month_rg2:=粘贴(第2年,month_rg2)]
rg
id注册\u月区域操作\u系统月\u rg2
#1:id_10033 1 EMEA Windows 1月
#2:id_10050第1行未知1月
#3:id_10054 1 EMEA Windows 1月
#4:id_10080第1行未知1月
#5:id_10098 1行窗口1月
# ---
#40122:ID986821 EMEA Mac第二年9月
#40123:ID9885第21行未知第2年9月
#40124:ID988821排Windows第二年9月
#40125:id_9905第21行未知第2年9月
#40126:id_9919 21美国Windows第二年9月
fifelse
registration\u month>12
从中减去12,得到相应的月份名称。同时将粘贴到这些月份名称上。您可以使用sapply
:
rg[,.(month_rg2 = sapply(registration_month,
function(month) ifelse(month<= 12,
month.abb[month],
paste0("2nd Year ", month.abb[month-12]))))]
month_rg2
1: Jan
2: Jan
3: Jan
4: Jan
5: Jan
---
40122: 2nd Year Sep
40123: 2nd Year Sep
40124: 2nd Year Sep
40125: 2nd Year Sep
40126: 2nd Year Sep
rg[,(月)rg2=sapply(注册月),
函数(月)ifelse(月我们可以使用FIFEELSE
给出前缀”
或第二年
,并在注册月份
中的值上使用%%
,以确保月数限制在1
到12
范围内,例如
rg[
,
month_rg2 :=
paste0(
fifelse(
registration_month <= 12,
"",
"2nd Year "
),
month.abb[(registration_month - 1) %% 12 + 1]
)
][]
library(data.table)
rg <- structure(list(registration_month = c(1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21), id = c("id_10033",
"id_10048", "id_10052", "id_10044", "id_10006", "id_10000", "id_10053",
"id_10008", "id_10016", "id_10002", "id_10", "id_10025", "id_1001",
"id_1", "id_1000", "id_10009", "id_10005", "id_1002", "id_10051",
"id_1004", "id_10004"), region = c("EMEA", "EMEA", "EMEA", "EMEA",
"ROW", "ROW", "ROW", "ROW", "ROW", "EMEA", "ROW", "ROW", "ROW",
"America", "ROW", "ROW", "ROW", "ROW", "ROW", "ROW", "EMEA"),
operating_system = c("Windows", "Windows", "Windows", "Mac",
"Unknown", "Windows", "Windows", "Windows", "Unknown", "Linux",
"Mac", "Unknown", "Mac", "Windows", "Windows", "Windows",
"Mac", "Windows", "Windows", "Windows", "Mac")), row.names = c(NA,
-21L), class = "data.frame")
rg <- as.data.table(rg)
library(data.table)
rg[, month_rg2 := month.abb[fifelse(registration_month<= 12,
registration_month, registration_month - 12)]]
rg[registration_month > 12 , month_rg2 := paste('2nd year', month_rg2)]
rg
id registration_month region operating_system month_rg2
# 1: id_10033 1 EMEA Windows Jan
# 2: id_10050 1 ROW Unknown Jan
# 3: id_10054 1 EMEA Windows Jan
# 4: id_10080 1 ROW Unknown Jan
# 5: id_10098 1 ROW Windows Jan
# ---
#40122: id_9868 21 EMEA Mac 2nd year Sep
#40123: id_9885 21 ROW Unknown 2nd year Sep
#40124: id_9888 21 ROW Windows 2nd year Sep
#40125: id_9905 21 ROW Unknown 2nd year Sep
#40126: id_9919 21 America Windows 2nd year Sep
rg[,.(month_rg2 = sapply(registration_month,
function(month) ifelse(month<= 12,
month.abb[month],
paste0("2nd Year ", month.abb[month-12]))))]
month_rg2
1: Jan
2: Jan
3: Jan
4: Jan
5: Jan
---
40122: 2nd Year Sep
40123: 2nd Year Sep
40124: 2nd Year Sep
40125: 2nd Year Sep
40126: 2nd Year Sep
rg[
,
month_rg2 :=
paste0(
fifelse(
registration_month <= 12,
"",
"2nd Year "
),
month.abb[(registration_month - 1) %% 12 + 1]
)
][]
id registration_month region operating_system month_rg2
1: id_10033 1 EMEA Windows Jan
2: id_10050 1 ROW Unknown Jan
3: id_10054 1 EMEA Windows Jan
4: id_10080 1 ROW Unknown Jan
5: id_10098 1 ROW Windows Jan
---
40122: id_9868 21 EMEA Mac 2nd Year Sep
40123: id_9885 21 ROW Unknown 2nd Year Sep
40124: id_9888 21 ROW Windows 2nd Year Sep
40125: id_9905 21 ROW Unknown 2nd Year Sep
40126: id_9919 21 America Windows 2nd Year Sep