我有两个csv文件。文件一(consumption.scv)在标题中具有家庭标识符编号,在每行中具有每小时消耗值。每列代表另一个hosuehold。文件二是一列,只有我想要包含的家庭号码 我想生成一个文件,其中只包含文件b中包含的消费时间系列的住户。
消费< -read.csv householdno< -read.csv
我遇到以下情况: consumption_new< -consumption [,C(XXXXXX)]
非常感谢你的帮助!
答案 0 :(得分:1)
由于您还没有reproducible example,我必须创建一个:
set.seed(123)
consumption <- matrix(floor(runif(26*3, 10, 30)), nrow=3)
colnames(consumption) <- LETTERS
householdno <- data.frame(houses=sample(LETTERS, 5))
consumption[, colnames(consumption) %in% householdno[,1]]
# C F J P Z
# [1,] 20 27 21 12 14
# [2,] 27 14 15 14 17
# [3,] 21 10 12 19 22
诀窍是使用logical vector to subset columns from data.frame。 TRUE包括列,FALSE排除它。
%in%
将检查第二个向量中的每个元素是否都存在于第二个向量中。它返回第一个向量长度的逻辑向量。
完成触摸是使用该逻辑向量来对data.frame中的所需列进行子集化。如果您决定将该向量存储在变量中,这将更具可读性。