我已经搜索了很多,但是似乎无法找到解决我问题的方法。
这是我们正在谈论的数据集:
NS WE LatCopy LongCopy
FALSE FALSE 48.89328 5.803433
TRUE FALSE 48.55725 6.877400
TRUE FALSE 48.39922 9.383667
FALSE TRUE 48.37538 9.517017
TRUE FALSE 48.20710 12.324067
TRUE TRUE 48.16878 12.822067
由于这些是坐标,因此我必须取消风向才能将其转换为十进制度数。但是,我现在没有-指示器。
我正在寻找的结果是这样的:
NS WE LatCopy LongCopy
FALSE FALSE 48.89328 -5.803433
TRUE FALSE 48.55725 -6.877400
TRUE FALSE 48.39922 -9.383667
FALSE TRUE -48.37538 9.517017
TRUE FALSE 48.20710 -12.32406
TRUE TRUE 48.16878 -12.82206
数据
df <- read.table(text="NS WE LatCopy LongCopy
FALSE FALSE 48.89328 5.803433
TRUE FALSE 48.55725 6.877400
TRUE FALSE 48.39922 9.383667
FALSE TRUE 48.37538 9.517017
TRUE FALSE 48.20710 12.324067
TRUE TRUE 48.16878 12.822067",h=T)
答案 0 :(得分:1)
您也可以稍作调整使用sign
>
df[c("LongCopy", "LatCopy")] <-
df[c("LongCopy", "LatCopy")] * sign(.5-df[c("NS","WE")]) # or `2*` instead of sign
# NS WE LatCopy LongCopy
# 1 TRUE FALSE 48.89328 -5.803433
# 2 TRUE FALSE 48.55725 -6.877400
# 3 TRUE FALSE 48.39922 -9.383667
# 4 FALSE TRUE -48.37538 9.517017
# 5 TRUE FALSE 48.20710 -12.324067
# 6 TRUE FALSE 48.16878 -12.822067
答案 1 :(得分:1)
只有一种可能性,dplyr
解决方案:
data %>%
mutate(LatCopy = ifelse(NS, LatCopy, -LatCopy),
LongCopy = ifelse(WE, LongCopy, -LongCopy))
一种data.table
解决方案:
setDT(data)[, LatCopy := ifelse(NS, LatCopy, -LatCopy)
][, LongCopy := ifelse(WE, LongCopy, -LongCopy)]
答案 2 :(得分:0)
dataframe$LatCopy <- ifelse(dataframe$WE == TRUE, -dataframe$LatCopy, dataframe$LatCopy)
dataframe$LongCopy <- ifelse(dataframe$NS == TRUE, -dataframe$LongCopy , dataframe$LongCopy )
您可以尝试这样的事情吗?我没有打开R,所以我无法对其进行测试,但这是我要开始的地方。