R 将新列添加到现有数据集
我需要在此数据集中添加另一列,并使用County列名称。如果城市是马德里,国家就必须是西班牙。我现在这是一个非常小的数据集,我需要能够以编程的方式完成这项工作 我希望我的新数据框如下所示:R 将新列添加到现有数据集,r,R,我需要在此数据集中添加另一列,并使用County列名称。如果城市是马德里,国家就必须是西班牙。我现在这是一个非常小的数据集,我需要能够以编程的方式完成这项工作 我希望我的新数据框如下所示: Date City Temp 1/1/2012 Liverpool 10 1/2/2012 Madrid 20 1/3/2012 Milan 40 1/4/2012 Istanbul 35 1/5/2012 Munich 10 我将如
Date City Temp
1/1/2012 Liverpool 10
1/2/2012 Madrid 20
1/3/2012 Milan 40
1/4/2012 Istanbul 35
1/5/2012 Munich 10
我将如何在R?中使用您提供的确切数据进行此操作的任何提示如下:
Date City Temp Country
--------------------------------------
1/1/2012 Liverpool 10 England
1/2/2012 Madrid 20 Matrid
1/3/2012 Milan 40 Italy
1/4/2012 Istanbul 35 Turkey
1/5/2012 Munich 10 Germany
如果不知道这些城市是如何映射到您所在的国家的(例如,它们是否映射到
列表
、向量
、数据框
,或者其他一些地方),很难猜出正确的答案是什么。这里有一种方法,城市-国家地图位于列表中:
library(maps)
data(world.cities)
head(world.cities)
world.cities[world.cities$name == "Istanbul" ,]
df是否要添加行或列?您想添加的行/列是什么样子的?您想让它自动识别国家吗?我想在列中插入一个国家,然后检查每一行。例如,如果它是matrid,我需要在该行中插入西班牙。因为马德里将多次出现在这个数据集中。每次,我看到马德里,我都应该把西班牙作为国家。你需要另一张桌子来绘制城市到国家的地图。如果有一个图书馆为我们做这件事,那就太酷了……我喜欢使用ifelse,我遵循你的代码,而不是为我工作。如果这个城市是利物浦,Countyr是英格兰,你能只写一行吗?这是因为你在慕尼黑的拼写错误吗?她是你想要的一行,但上面的代码是有效的:df$practice我得到了这个错误:df$Newyes,因为你没有给ifelse
一个选项,如果df$City
不是Liverpool
的话,该选项应该怎么做……将你写的内容与我上面的评论进行比较……函数是ifelse
。所以你应该像利物浦然后英格兰那样阅读你的代码,如果不是的话,那么是其他的东西。你没有提供其他东西。在我的示例中,注释中的其他内容是“不是英格兰”
。有关详细信息,请键入?ifelse
。
countrydf <- read.table(text= " City Country
Liverpool England
Madrid Spain
Milan Italy
Istanbul Turkey
Munich Germany",header=TRUE,stringsAsFactors=FALSE)
merge(df,countrydf, by="City")
library(maps)
data(world.cities)
head(world.cities)
world.cities[world.cities$name == "Istanbul" ,]
df <- read.table(text="Date City Temp
1/1/2012 Liverpool 10
1/2/2012 Madrid 20
1/3/2012 Milan 40
1/4/2012 Istanbul 35
1/5/2012 Munich 10", header=TRUE)
city.countries <- list(England=c('Liverpool', 'London'),
Spain='Madrid',
Italy='Milan',
Turkey='Istanbul',
Germany='Munich')
df <- transform(df, Country = with(stack(city.countries), ind[match(City, values)]))
# Date City Temp Country
# 1 1/1/2012 Liverpool 10 England
# 2 1/2/2012 Madrid 20 Spain
# 3 1/3/2012 Milan 40 Italy
# 4 1/4/2012 Istanbul 35 Turkey
# 5 1/5/2012 Munich 10 Germany