![](/img/trans.png)
[英]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.