[英]Add new column to dataframe that is the name of dataframe in for loop R?
[英]Loop through dataframe rows and add value in a new column (R)
我有一個數據框(df),其中有一列緯度(Lat),我需要匹配相應的經度值(基於另一個數據集中的關系)。 新列名稱為“ Long_matched”。
在這里,我試圖在相應行的'Long_matched'列中寫入一個新值,以將緯度設置在-33.9238和-33.9236之間。 “拉特”中的數據還有更多小數位(例如:-33.9238026666667,-33.9236026666667等)。 由於我會將這段代碼應用於同一地理位置上的多個數據集(因此,長的小數位會略有不同),因此我想編寫落在0.0002度范圍內的經度值。
我嘗試過的一些代碼嘗試包括:
df$Long_matched <- ifelse(df$Lat< -33.9236 & df$Lat> -33.9238, 151.2279 , "N/A")
要么
df$Long_matched[df$Lat< -33.9236 & df$Lat> -33.9238] <- 151.2279
我想我需要使用for循環遍歷行和if語句,但是要弄清楚這一點-任何幫助將不勝感激!
結果輸出應如下所示:
Lat Long_matched
-33.9238026666667 151.2279
-33.9236026666667 (new long value will go here)
注釋中所述的所有內容均適用,但是您可以嘗試以下技巧:在下面的代碼中,您將需要用數字替換文本。
Latitude_breaks <- seq(min_latitude, max_latitude, 0.0002) # you need to replace `min_latitude`, `max_latitude`, and `increment` with numbers
Longitude_values <- seq(first, last, increment) # you need to replace `first`, `last` and `increment` with numbers
df <- within(df, {
# make a categorical version of `Lat`
Lat_cat <- cut(Lat, Latitude_breaks)
Long_matched <- Longitude_values[Lat_cat]
})
一些注意事項:
min_latitude
和min_latitude + 1
之間的值將分配給首先標記的Longitude
值。 Latitude_beaks
的長度應比Longitude_values
的長度Longitude_values
。 Latitude_breaks
以外的Lat
值將變為NA。 這通過利用因子的一個很好的功能而起作用-它們存儲為整數。 因此,我們可以使用它們來索引另一個矢量-在這種情況下為Longitude_values
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.