如何根据R语言中该列的类类型为数据帧的不同列应用不同的FOR循环?

时间:2015-09-03 17:38:31

标签: r dataframe

例如,如果列类是数字,则应用数学函数,例如mean()。如果下一列是日期,则是最小日期,最大日期等。

S.NO NAME MARKS DOB
1.    X     90  1-2-1991
2.    Y     80  1-3-1991
3.    Z     70  1-4-1991

将此视为样本数据集。如何为数据集中的列应用不同的函数?应根据列的类别选择函数。

1 个答案:

答案 0 :(得分:2)

只需使用检查变量类的函数并返回不同的值,然后在data.frame上使用lapply。这是一个任意函数的例子。

lapply(d,function(x) {
  if(class(x) %in% c("numeric","integer")) mean(x)
  else if(class(x) == "Date") min(x)
  else if(class(x) == "character") nchar(x)
})

数据

txt <- readLines(n=4)
S.NO NAME MARKS DOB
1.    X     90  1-2-1991
2.    Y     80  1-3-1991
3.    Z     70  1-4-1991
d <- read.table(text=txt,head=TRUE,stringsAsFactor=FALSE)
d$DOB <- as.Date(d$DOB)