这是我的第一篇文章,所以如果我在这里做错了,不要太苛刻。 我是编程语言r的新手,并且得到了一个类似4000行的数据集。
#Data
Key Date Value ...other columns
C 2000-04 0.55 name1 x1 <-
C 2000-04 0.60 name2 x2 <-
C 2000-05 1.2
A 2001-06 4
A 2001-07 5
A 2002-08 2
...
所以我发现我使用以下代码对同一个Date和相同的Key确实有一些值:)
>Data <- as.data.frame(Data)
>Duplicates <- which(duplicated(Data[c('Key','Date')]),)
>View(Duplicates)
所以我已经知道基于Key和Date的那些类似的行在哪里,我想加起来。 由于我的数据集只有4000行,我可以轻松地将它写入.csv或excel,并使用我的双手将这些行添加到一起。
>write.csv(Date, file = ...)
但我想知道如何使用代码解决它。 我看到的唯一问题是我某行中的其他列有不同的名称“name1 / name2”和“x1 / x2”。 我的新数据表应如下所示:
#Data
Key Date Value ...other columns
C 2000-04 1.15 name1 x1 <- Add up to 1
C 2000-05 1.2
A 2001-06 4
A 2001-07 5
A 2002-08 2
...
所以我想从密钥和日期的两行中找出两行,并在我的新行的其他列中添加第一行的名称/值。
谢谢! :)
答案 0 :(得分:1)
如果我理解你的问题,你可以试试这个 -
library(dplyr)
df1 <- df %>%
group_by(Key, Date) %>%
mutate(Value = sum(Value)) %>%
filter(row_number() == 1)
输出为:
> df1
Key Date Value col4 col5
1 C 2000-04 1.15 name1 x1
2 C 2000-05 1.2 n x
3 A 2001-06 4 n x
4 A 2001-07 5 n x
5 A 2002-08 2 n x
示例数据:
df <- structure(list(Key = c("C", "C", "C", "A", "A", "A"), Date = c("2000-04",
"2000-04", "2000-05", "2001-06", "2001-07", "2002-08"), Value = c(0.55,
0.6, 1.2, 4, 5, 2), col4 = c("name1", "name2", "n", "n", "n",
"n"), col5 = c("x1", "x2", "x", "x", "x", "x")), class = "data.frame", row.names = c(NA,
-6L))
# Key Date Value col4 col5
#1 C 2000-04 0.55 name1 x1
#2 C 2000-04 0.60 name2 x2
#3 C 2000-05 1.20 n x
#4 A 2001-06 4.00 n x
#5 A 2001-07 5.00 n x
#6 A 2002-08 2.00 n x