在这种情况下,tapply(参数长度不等)有什么问题?
What's wrong with tapply (args are unequal length) in this case?
数据取自那里http://open.canada.ca/data/en/dataset/b52664cf-bfd9-49ad-849a-cb88c92553b9(英文版)
glacier <- read.csv("glacier.csv", stringsAsFactors = F)
str(glacier)
'data.frame': 518 obs. of 6 variables:
$ Ref_Date : int 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 ...
$ GEO : chr "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" ...
$ MEASURE : chr "Annual mass balance" "Annual mass balance" "Annual mass balance" "Annual mass balance" ...
$ Vector : chr "v54326054" "v54326054" "v54326054" "v54326054" ...
$ Coordinate: num 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 ...
$ Value : chr "-1460.0" "-780.0" "-2730.0" "-940.0" ...
tapply(X = as.numeric(glacier[glacier$MEASURE == "Annual mass balance", c("Value")]),
INDEX = unique(glacier[ , 2]), FUN = median, na.rm = T)
给出错误:
tapply 错误(as.numeric(冰川[冰川$MEASURE == "Annual mass balance",:
аргументы должны иметь одинаковую длину
我检查了参数,它们对于 tapply 函数来说似乎很正常。不知道,怎么了。提前致谢。
编辑:
tapply(X = as.numeric(glacier[glacier$MEASURE == "Annual mass balance", c("Value")]),
INDEX = glacier[ , 2], FUN = median, na.rm = T)
给出同样的错误
您正在尝试对冰川数据框进行子集化,我希望 glacier$Measure !="Annual mass balance"
中有一个或多个元素。因此 glacier[glacier$MEASURE == "Annual mass balance", c("Value")]
的列长度不等于 glacier[ , 2]
的长度。如果这是真的,那么您还需要对索引进行子集化。
这是一个创建数据子集以提高可读性的解决方案:
glacier <- read.csv("01530102-eng.csv", stringsAsFactors = F)
glacierreduced<-glacier[glacier$MEASURE == "Annual mass balance",]
tapply(X = as.numeric(glacierreduced$Value), INDEX = glacierreduced[ , 2],
FUN = median, na.rm = T)
数据取自那里http://open.canada.ca/data/en/dataset/b52664cf-bfd9-49ad-849a-cb88c92553b9(英文版)
glacier <- read.csv("glacier.csv", stringsAsFactors = F)
str(glacier)
'data.frame': 518 obs. of 6 variables:
$ Ref_Date : int 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 ...
$ GEO : chr "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" "Helm Glacier - southern Coast Mountains (Garibaldi Provincial Park), British Columbia" ...
$ MEASURE : chr "Annual mass balance" "Annual mass balance" "Annual mass balance" "Annual mass balance" ...
$ Vector : chr "v54326054" "v54326054" "v54326054" "v54326054" ...
$ Coordinate: num 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 ...
$ Value : chr "-1460.0" "-780.0" "-2730.0" "-940.0" ...
tapply(X = as.numeric(glacier[glacier$MEASURE == "Annual mass balance", c("Value")]),
INDEX = unique(glacier[ , 2]), FUN = median, na.rm = T)
给出错误: tapply 错误(as.numeric(冰川[冰川$MEASURE == "Annual mass balance",: аргументы должны иметь одинаковую длину 我检查了参数,它们对于 tapply 函数来说似乎很正常。不知道,怎么了。提前致谢。
编辑:
tapply(X = as.numeric(glacier[glacier$MEASURE == "Annual mass balance", c("Value")]),
INDEX = glacier[ , 2], FUN = median, na.rm = T)
给出同样的错误
您正在尝试对冰川数据框进行子集化,我希望 glacier$Measure !="Annual mass balance"
中有一个或多个元素。因此 glacier[glacier$MEASURE == "Annual mass balance", c("Value")]
的列长度不等于 glacier[ , 2]
的长度。如果这是真的,那么您还需要对索引进行子集化。
这是一个创建数据子集以提高可读性的解决方案:
glacier <- read.csv("01530102-eng.csv", stringsAsFactors = F)
glacierreduced<-glacier[glacier$MEASURE == "Annual mass balance",]
tapply(X = as.numeric(glacierreduced$Value), INDEX = glacierreduced[ , 2],
FUN = median, na.rm = T)