【发布时间】:2020-01-18 19:42:51
【问题描述】:
我正在尝试使用 unite 编写 ifelse 语句(if 语句也可以),这样如果 FPLACE 列中的字符数等于四个,它将创建一个名为“PLACE_ID”的新列联合FIPS 和 FPLACE(按此顺序,无空格)和(因为所有其他字符将等于 5)将 FPLACE 列中的剩余值与 FIPS_ST 和 FPLACE 合并,然后将这些值也放入“PLACE_ID”列。
在过去的一个小时里,我一直在尝试这种形式:
ifelse(nchar(dat$FPLACE, type = "chars")==4,
dat%>%unite(PLACE_ID, FIPS, FPLACE, sep = "", remove = FALSE),
dat%>%unite(PLACE_ID, FIPS_ST, FPLACE, sep = "", remove = TRUE))
开始更简单:
nchar(dat$FPLACE, type = "chars")==4,
这行得通,但后来我尝试下面的代码,但出了点问题。
if(dat$FPLACE==nchar(4)){
print(
dat%>%unite(PLACE_ID, FIPS, FPLACE, sep = "", remove = FALSE))
}
理想情况下,我可以只使用管道,但即使这样也行不通:
dat%>%nchar(.$FPLACE, type = "chars")==4
而且我认为在我不断的困惑中隐藏着一些既基本又重要的东西。为什么 dat%>%filter(variable=="something") 会起作用,但 dat%>%nchar(.$variable)==4 不会?我也从来没有弄清楚什么时候必须使用 .$ 与什么时候不需要。押韵和理由是什么?
非常感谢!!!
在这里输入:
Show in New WindowClear OutputExpand/Collapse Output
structure(list(X1 = c(1, 2, 3), FSTATE = c("(01) Alabama", "(01) Alabama",
"(01) Alabama"), FCOUNTY = c(1, 1, 1), FPLACE = c(3220, 62328,
62328), FIPS_ST = c("01", "01", "01"), FIPS_COUNTY = c("001",
"001", "001"), FIPS = c("01001", "01001", "01001"), ORI9 = c("AL0040200",
"AL0040100", "AL0040300"), ORI7 = c("AL00402", "AL00401", "-1"
), NAME = c("AUTAUGAVILLE POLICE DEPARTMENT", "PRATTVILLE POLICE DEPARTMENT",
"PRATTVILLE FIRE DEPT ARSON INVESTIGATION BRANCH")), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -3L), spec = structure(list(
cols = list(X1 = structure(list(), class = c("collector_double",
"collector")), FSTATE = structure(list(), class = c("collector_character",
"collector")), FCOUNTY = structure(list(), class = c("collector_double",
"collector")), FPLACE = structure(list(), class = c("collector_double",
"collector")), FIPS_ST = structure(list(), class = c("collector_character",
"collector")), FIPS_COUNTY = structure(list(), class = c("collector_character",
"collector")), FIPS = structure(list(), class = c("collector_character",
"collector")), ORI9 = structure(list(), class = c("collector_character",
"collector")), ORI7 = structure(list(), class = c("collector_character",
"collector")), NAME = structure(list(), class = c("collector_character",
"collector")), UA = structure(list(), class = c("collector_double",
"collector")), STATENAME = structure(list(), class = c("collector_character",
"collector")), COUNTYNAME = structure(list(), class = c("collector_character",
"collector")), UANAME = structure(list(), class = c("collector_character",
"collector")), PARTOF = structure(list(), class = c("collector_character",
"collector")), AGCYTYPE = structure(list(), class = c("collector_character",
"collector")), SUBTYPE1 = structure(list(), class = c("collector_character",
"collector")), SUBTYPE2 = structure(list(), class = c("collector_character",
"collector")), GOVID = structure(list(), class = c("collector_double",
"collector")), LG_NAME = structure(list(), class = c("collector_character",
"collector")), ADDRESS_NAME = structure(list(), class = c("collector_character",
"collector")), ADDRESS_STR1 = structure(list(), class = c("collector_character",
"collector")), ADDRESS_STR2 = structure(list(), class = c("collector_character",
"collector")), ADDRESS_CITY = structure(list(), class = c("collector_character",
"collector")), ADDRESS_STATE = structure(list(), class = c("collector_character",
"collector")), ADDRESS_ZIP = structure(list(), class = c("collector_double",
"collector")), REPORT_FLAG = structure(list(), class = c("collector_character",
"collector")), CSLLEA08_ID = structure(list(), class = c("collector_double",
"collector")), LEMAS_ID = structure(list(), class = c("collector_character",
"collector")), U_STATENO = structure(list(), class = c("collector_character",
"collector")), U_CNTY = structure(list(), class = c("collector_double",
"collector")), U_POPGRP = structure(list(), class = c("collector_character",
"collector")), U_TPOP = structure(list(), class = c("collector_double",
"collector")), LG_POPULATION = structure(list(), class = c("collector_double",
"collector")), CSLLEA_SUB = structure(list(), class = c("collector_character",
"collector")), COMMENT = structure(list(), class = c("collector_character",
"collector")), INTPTLAT = structure(list(), class = c("collector_double",
"collector")), INTPTLONG = structure(list(), class = c("collector_double",
"collector")), CONGDIST1 = structure(list(), class = c("collector_character",
"collector")), CONGDIST2_18 = structure(list(), class = c("collector_character",
"collector")), DISTNAME = structure(list(), class = c("collector_character",
"collector")), SOURCE_CSLLEA2008 = structure(list(), class = c("collector_double",
"collector")), SOURCE_UCR2010 = structure(list(), class = c("collector_double",
"collector")), SOURCE_UCR2011 = structure(list(), class = c("collector_double",
"collector")), SOURCE_UCR2012 = structure(list(), class = c("collector_double",
"collector")), SOURCE_NCIC2012 = structure(list(), class = c("collector_double",
"collector")), SOURCE_VENDOR = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
【问题讨论】:
标签: r if-statement dplyr