[英]Copy unique values from one column to another R
我最近开始使用R,虽然我有一本手册,但我仍然发现在那里找不到我需要的功能。 这是我偶然发现的一个问题。
我的数据看起来像这样:
col1 col2 col3
Alex NA URL
Mike URL NA
John URL URL
Peter NA NA
James NA URL
Col1将始终是唯一的分类值。 Col2代表这些人来自我的网站的来源(URL意味着那里有一个完整的URL,http:www.facebook.com)。 NA表示用户来到我的网站病毒。 Col3代表referal(用户来自何处的另一个指示)。
我需要做的是根据以下条件将数据从col3传输或复制到col2:如果在第3列中我有一个URL而在col2中我有NA,那么带有来自col3的URL的单元格我需要将它复制到COL2。 如果col3和col2都有URL,那么我不想在那里发生任何事情。 如果col 3有NA而col2有URL,我再也不希望有任何改变。 这是所需的输出
col1 col2 col3
Alex URL(copied from col3) URL
Mike URL(kept this URL) NA
John URL(kept this URL) URL
Peter NA(Kept NA) NA
James URL(copied from col3) URL
因此,Alex和James从col3获得了URL,John和Mike保留了他们在col2中的初始URL,而Peter保留了他的NA。
现在,我已经到处查看,即使在这个网站上也无法找到任何关于使用“IF”条件将数据从一列复制到另一列的信息。 我发现的唯一一件事是如何使用“合并”功能将整个列从一个数据帧复制到另一个数据帧,但除此之外别无其他。
是否存在可以实现此功能的功能?
你的例子是不可复制的,所以我必须自己创建一些:
dat = data.frame(name = sample(c("John", "James", "Peter"), size = 10, replace = TRUE),
source = sprintf("http://www.%s.com", sample(LETTERS, size = 10)),
referal = sprintf("http://www.%s.com", sample(LETTERS, size = 10)))
# Introduce some NA's
dat[c(1,3,9), "source"] <- NA
dat[c(2,7), "referal"] <- NA
> dat
name source referal
1 John <NA> http://www.W.com
2 James http://www.M.com <NA>
3 John <NA> http://www.Z.com
4 Peter http://www.J.com http://www.L.com
5 Peter http://www.L.com http://www.H.com
6 Peter http://www.T.com http://www.U.com
7 James http://www.E.com <NA>
8 Peter http://www.K.com http://www.K.com
9 Peter <NA> http://www.R.com
10 James http://www.Z.com http://www.N.com
您正在寻找的功能称为ifelse
:
dat = within(dat, {
source = as.character(source)
referal = as.character(referal)
source = ifelse(is.na(source), referal, source)
} )
> dat
name source referal
1 John http://www.W.com http://www.W.com
2 James http://www.M.com <NA>
3 John http://www.Z.com http://www.Z.com
4 Peter http://www.J.com http://www.L.com
5 Peter http://www.L.com http://www.H.com
6 Peter http://www.T.com http://www.U.com
7 James http://www.E.com <NA>
8 Peter http://www.K.com http://www.K.com
9 Peter http://www.R.com http://www.R.com
10 James http://www.Z.com http://www.N.com
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.