【发布时间】:2015-06-10 18:21:20
【问题描述】:
我正在尝试创建一个函数,将连续数据放入离散的(用户定义的)箱中以进行绘图和分析。我必须为许多变量执行此操作,这些变量都需要以不同的间隔设置不同数量的 bin,而且我发现自己一遍又一遍地编写非常相似的代码(见下文),这就是为什么我认为一个函数可能是书面。另外,我很好奇是否有办法让循环参与进来以进一步简化代码。
我一次又一次地编写代码(我编写了类似的代码,将 1-10 分放入垃圾箱):
decade <-
ifelse(Year >= 1940 & Year < 1950, Decade <- "1940's",
ifelse(Year >= 1950 & Year < 1960, Decade <- "1950's",
ifelse(Year >= 1960 & Year < 1970, Decade <- "1960's",
ifelse(Year >= 1970 & Year < 1980, Decade <- "1970's",
ifelse(Year >= 2010 & Year < 2020, Decade <- "2010's",
ifelse(Year >= 1980 & Year < 1990, Decade <- "1980's",
ifelse(Year >= 1990 & Year < 2000, Decade <- "1990's",
ifelse(Year >= 2000 & Year < 2010, Decade <- "2000's",
NA))))))))
我的功能尝试(不起作用):
bins <- function (variable, binName, b1, b2, b3, b4, b5, b6, b7, b8, b9=NULL, b10=NULL) {
binname <- (
ifelse(variable >= b1 & variable < b2, binName <- paste(b1, 's'),
ifelse(variable >= b2 & variable < b3, binName <- paste(b2, 's'),
ifelse(variable >= b3 & variable < b4, binName <- paste(b3, 's'),
ifelse(variable >= b4 & variable < b5, binName <- paste(b4, 's'),
ifelse(variable >= b5 & variable < b6, binName <- paste(b5, 's'),
ifelse(variable >= b6 & variable < b7, binName <- paste(b6, 's'),
ifelse(variable >= b7 & variable < b8, binName <- paste(b7, 's'),
ifelse(variable >= b8 & variable < b9, binName <- paste(b8, 's'),
NA))))))))) }
bins(Year, decade1, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010, 2020)
感谢您的帮助!
【问题讨论】:
-
在休息时使用
cut。 i.c .cut(Year, breaks= c(-Inf,seq(1940, 2010, by=10), Inf))并指定labels -
不。使用
findInterval或cut。这实际上是关于 SO 现在的常见问题解答。已经问了很多次了。