6

我有一个 200 行 x 6 列的数据框。我有兴趣计算 Col A 中的值小于特定数字的总次数。该号码可以是硬编码的。我不知道从哪里开始...

4

5 回答 5

10

对于稍微复杂一点的问题,使用“which”来告诉“sum”在哪里求和:如果 DF 是数据框:

      Ozone Solar.R  Wind Temp Month Day
 1      41     190  7.4   67     5   1
 2      97     267  6.3   92     7   8   
 3      97     272  5.7   92     7   9

示例:汇总 Solar.R(第 2 列)的值,其中 Column1 或 Ozone>30 AND Column 4 或 Temp>90

sum(DF[which(DF[,1]>30 & DF[,4]>90),2])
于 2014-01-09T13:31:25.227 回答
6

要计算有多少值低于某个数字,您可以使用?sum

sum( df$columnA < NUMBER )
于 2012-05-31T05:20:27.407 回答
5

只需根据您的情况使用 sum 即可。逻辑值转换为 0 表示 FALSE,1 表示 TRUE,因此对逻辑求和可以告诉您有多少值是 TRUE。

 dat <- as.data.frame(matrix(1:36,6,6))
 colnames(dat) <- paste0("Col", LETTERS[1:6])
 dat$ColA
# [1] 1 2 3 4 5 6
 dat$ColA < 3
# [1]  TRUE  TRUE FALSE FALSE FALSE FALSE
 sum(dat$ColA < 3)
# [1] 2
于 2012-05-31T05:22:22.290 回答
3

虽然答案sum( df$columnA < NUMBER )是正确的,但稍微扩展一下可能会更好。

假设您想对值求和而不是计数,您可以使用:

sum(df[df$columnA < Number,]$columnA)

或者如果有NA值使用:

sum(df[df$columnA < Number,]$columnA, na.rm=TRUE)
sum(df[(df$columnA < Number)&(!is.na(df$columnA)),]$columnA)

基本上发生的情况是您创建了一个基于您的条件的具有 TRUE/FALSE 的 columnA 的布尔向量。然后,您将获取原始数据帧的一个子集,并在这种情况下使用它来对 columnA 进行求和。

这是一个您可以用来尝试的示例:

df = data.frame(colA=c(1, 2, 3, 4, NA), colB=c('a', NA, 'c', 'd', 'e'))

# Count
sum(df$colA) # NA
sum(df$colA, na.rm=TRUE) # 10 This is actually sum of values since colA wasn't turned into vector of booleans
sum(df$colA > 0, na.rm=TRUE) # 4
sum(df$colA > 2, na.rm=TRUE) # 2
sum((df$colA > 2) & (df$colB == 'd'), na.rm=TRUE) # 1

# Sum of values
sum(df$colA, na.rm=TRUE) # 10
sum(df[df$colA > 0,]$colA, na.rm=TRUE) # 10
sum(df[df$colA > 2,]$colA, na.rm=TRUE) # 7
bn_vector = (df$colA > 2)&(df$colB=='d') # Boolean vector
sub_df = df[bn_vector,] # Subset of the dataframe. Leaving the second argument in [] empty uses all the columns
sub_df_colA = df[bn_vector, 'colA'] # Content of column 'colA' which is vector of numbers
sum(sub_df$colA) # 4
sum(sub_df_colA) # 4
于 2017-09-20T14:43:18.473 回答
0

臭氧<-c(41,97,97)

Solar.R<-c(190,267,272)

风<-c(7.4,6.3,5.7)

温度<-c(67,92,92)

月<-c(5,7,7)

日<-c(1,8,9)

tbl<-data.frame(臭氧、太阳能、风、温度、月、日)

臭氧 | 太阳能.R | 风 | 温度 | 月 | 第 1 天 41 | 190 | 7.4 | 67 | 5 | 1 2 97 | 267 | 6.3 | 92 | 7 | 8 3 97 | 272 | 5.7 | 92 | 7 | 9

sum(tbl$Temp) / sum(!is.na(tbl$Temp))

[1] 84

于 2018-12-26T21:13:56.153 回答