我有一个数据集,它看起来像这样非常基本(它实际上要大得多)
frequency unit
500 3
2 1
400 3
4 1
15 2
单位栏显示频率是在1 =周,2 =月或3 =年中测量的。
我想要做的是重新编码频率(到同一个甚至是新行),这样我就可以将所有频率放在同一个单元中(例如,将15除以4和400除以52,以便测量所有内容周)。
我实际上尝试过很多东西:
data$frequency[data$unit == 2] <- data$frequency*0,25
但是这并没有按预期工作......因为它将频率列的第一个数字(500)与它相乘,并将其与0,25相乘并显示它...而不是使用同一行中的数字(15)。
frequency unit
500 3
2 1
400 3
4 1
125 2
而不是......
frequency unit
500 3
2 1
400 3
4 1
3.75 2
我希望看到的内容。
有没有人知道如何处理这个问题?...真的很棒:)。
答案 0 :(得分:2)
关于@DavidArenburg和@BondedDust的评论,有两种方法可以做到:
data <- read.table(header = TRUE,
stringsAsFactors = FALSE,
sep = ";",
text = "
frequency;unit;unit2
500;3;three
2;1;one
400;3;three
4;1;one
15;2;two")
(data$freqNew <- data$frequency / c("one" = 1, "two" = 4, "three" = 52)[data$unit2])
# 3 1 3 1 2
# 9.615385 2.000000 7.692308 4.000000 3.750000
data$frequency / c(1, 4, 52)[data$unit]
# [1] 9.615385 2.000000 7.692308 4.000000 3.750000