在dplyr :: summarize中使用可变的列数/循环

时间:2018-08-03 06:31:51

标签: r dplyr

目前我在R中有以下内容。 它只是给了我城市中的男性和女性总数。

df %>%
    group_by(city) %>%
      dplyr::summarize(pct.female = sum(sbq04 == "female"), pct.male = sum(sbq04 == "male"))

说我想对列sbq05做同样的总结 所述列包含约18个不同的值("first value", "second value", ....)。 我可以做类似于上面的事情:

df %>%
    group_by(city) %>%
      dplyr::summarize(pct.firstvalue = sum(sbq05 == "first value"), pct.secondvalue = sum(sbq05 == "second value"), ....)

但是,我必须明确输入所有18个值。有没有更短的方法?

我当时正在考虑将向量中所有列的不同值获取。然后循环内部汇总将总和应用于每个不同的值。 我对R很陌生,所以我不知道这在技术上是否可行,或者是否有更好的方法。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

添加其他列作为分组变量,并获取每个组中的行数。您也可以使用import smbus import time # Get I2C bus bus = smbus.SMBus(1) # BH1715 address, 0x23(35) # Send power on command # 0x01(01) Power On bus.write_byte(0x23, 0x01) # BH1715 address, 0x23(35) # Send continuous measurement command # 0x10(16) Set Continuous high resolution mode, 1 lux resolution, Time = 120ms bus.write_byte(0x23, 0x10) time.sleep(0.5) # BH1715 address, 0x23(35) # Read data back, 2 bytes using General Calling # luminance MSB, luminance LSB data = bus.read_i2c_block_data (0x23, 2) # Convert the data luminance = (data[0] * 256 + data[1]) / 1.2 # Output data to screen print "Ambient Light luminance : %.2f lux" %luminance 中的便利功能count来更轻松地完成此操作。然后,如果每个制造商希望排成一行,则可以dplyr列出这些值。以下是内置spread数据集的示例:

mpg

reprex package(v0.2.0)于2018-08-02创建。