【发布时间】:2017-02-22 00:32:03
【问题描述】:
不确定如何解决这个问题。
这是一个示例数据集:
Bob <- sample("Bob", 6, replace = T)
Jeff <- sample("Jeff", 6, replace = T)
Carl <- sample("Carl", 6, replace = T)
Name <- array(c(Bob, Jeff, Carl), dim = c(18,1))
Week <- c("Week 1", "Week 2", "Week 3", "Week 4", "Week 5", "Week 6",
"Week 1", "Week 2", "Week 3", "Week 4", "Week 5", "Week 6",
"Week 1", "Week 2", "Week 3", "Week 4", "Week 5", "Week 6")
variable.1 <- c("No", "No", "No", "Yes", "No", "No",
"Yes", "No", "No", "No", "Yes", "No",
"No", "Yes", "No", "No", "No", "Yes")
df <- data.frame(Name, Week, variable.1)
df
Name Week variable.1
1 Bob Week 1 No
2 Bob Week 2 No
3 Bob Week 3 No
4 Bob Week 4 Yes
5 Bob Week 5 No
6 Bob Week 6 No
7 Jeff Week 1 Yes
8 Jeff Week 2 No
9 Jeff Week 3 No
10 Jeff Week 4 No
11 Jeff Week 5 Yes
12 Jeff Week 6 No
13 Carl Week 1 No
14 Carl Week 2 Yes
15 Carl Week 3 No
16 Carl Week 4 No
17 Carl Week 5 No
18 Carl Week 6 Yes
我要做的是将 variable.1 列中的任何“是”向上移动一行,以便它可以反映为前一周信息的因子变量。我试图通过个人(而不是整个数据集)来做到这一点。当两个变量都是因素时,我无法弄清楚解决此问题的最佳方法。理想情况下,我希望出现一个 NA。我不希望一切都简单地向上移动。我只希望 NA 出现在“是”所在的位置,并让它覆盖上面的“否”。
所以,我希望成品看起来像下面的“New.Col”:
Name Week variable.1 New.Col
1 Bob Week 1 No No
2 Bob Week 2 No No
3 Bob Week 3 No Yes
4 Bob Week 4 Yes NA
5 Bob Week 5 No No
6 Bob Week 6 No No
7 Jeff Week 1 Yes NA
8 Jeff Week 2 No No
9 Jeff Week 3 No No
10 Jeff Week 4 No Yes
11 Jeff Week 5 Yes NA
12 Jeff Week 6 No No
13 Carl Week 1 No Yes
14 Carl Week 2 Yes NA
15 Carl Week 3 No No
16 Carl Week 4 No No
17 Carl Week 5 No Yes
18 Carl Week 6 Yes NA
【问题讨论】:
-
对于(Jeff,第 1 周,是)这样的情况,您希望发生什么?
-
啊,好问题。抱歉没说。会更新我的帖子。理想情况下,我希望出现一个 NA。我不希望一切都简单地向上移动。我只希望 NA 出现在“是”所在的位置,并让它覆盖上面的“否”。
-
我还是有点困惑。您能否给出您希望此示例的新列是什么?
-
对不起,我很难解释清楚。我在我的原始帖子中放了一个示例,说明我希望它是什么样子。
-
没关系。现在我们都对这个问题有了更好的了解,回答起来就更容易了
标签: r data-cleaning