如何使用R中一列中的数据在第二列中创建新数据

如何使用R中一列中的数据在第二列中创建新数据,r,R,1.您好,我目前正在学习R,试图从一个列中提取多个不同的值,并将它们分配给一个新的TIBLE/变量 postcode|average download speed| cv1 4b7 1.3 b16 6yt 1.5 2.有了这些数据,我希望能够创建一个变量,它允许我将邮政编码的前3个字母组合起来等于一个城市,例如伯明翰=(b15,b16,b17)考文垂=(cv1,cv2,cv3),然后当使用其他代码运行时,数据集将添加新的列,如下所示 postcod

1.您好,我目前正在学习R,试图从一个列中提取多个不同的值,并将它们分配给一个新的TIBLE/变量

postcode|average download speed|  
cv1 4b7           1.3

b16 6yt           1.5
2.有了这些数据,我希望能够创建一个变量,它允许我将邮政编码的前3个字母组合起来等于一个城市,例如伯明翰=(b15,b16,b17)考文垂=(cv1,cv2,cv3),然后当使用其他代码运行时,数据集将添加新的列,如下所示

postcode|average download speed|    city (adds new column using variables birmingham and coventry) 

cv1 4b7           1.3             coventry 

cv2 6rb           1.5             coventry 

cv3 649           1.2             coventry  
b15 7jr           1.8             birmingham  
b16 6yt           1.5             birmingham  
b17 8rb           2.4             birmingham  
我的数据已经存在于一个名为wifi的数据集中,我使用

wifi = wifi <- read_excel("data/wifi.xlsx")

wifi=wifi在主数据帧中,您需要使用
str_remove()
from
stringr
从以下空间中删除值:

 mydata <- mutate(mydata, postcode2 = str_remove(postcode, " .*"))
您可以从
dplyr
使用
left\u join()

left_join(mydata, mydata2, by = c("postcode2" = "postcode"))

在主数据框中,需要使用
str_remove()
from
stringr
从以下位置的空格中删除值:

 mydata <- mutate(mydata, postcode2 = str_remove(postcode, " .*"))
您可以从
dplyr
使用
left\u join()

left_join(mydata, mydata2, by = c("postcode2" = "postcode"))

您可以使用stringr中的单词来获取邮政编码的第一个“单词”(3个字母的前缀),然后在需要时使用case_进行测试

Birmingham = c("b15","b16","b17") 
Coventry = c("cv1", "cv2", "cv3")
df<-df %>%
  mutate(city=case_when(
     word(postcode,1) %in% Birmingham ~ "Birmingham",
     word(postcode,1) %in% Coventry ~ "Coventry",
     TRUE ~ "other city"
  ))

```

DATA
```
df<-structure(list(postcode = c("cv1 4b7", "b16 6yt"), average_download_speed = c(1.3, 
1.5)), class = "data.frame", row.names = c(NA, -2L))
```
伯明翰=c(“b15”、“b16”、“b17”) 考文垂=c(“cv1”、“cv2”、“cv3”) df% 变异(城市=案例)( 单词(邮政编码,1)%in%伯明翰~“伯明翰”, %Coventry~“Coventry”中的单词(邮政编码,1)%, 对~“其他城市” )) ``` 资料 ```
df您可以使用stringr中的单词来获取邮政编码的第一个“单词”(3个字母的前缀),然后在需要时使用case_进行测试

Birmingham = c("b15","b16","b17") 
Coventry = c("cv1", "cv2", "cv3")
df<-df %>%
  mutate(city=case_when(
     word(postcode,1) %in% Birmingham ~ "Birmingham",
     word(postcode,1) %in% Coventry ~ "Coventry",
     TRUE ~ "other city"
  ))

```

DATA
```
df<-structure(list(postcode = c("cv1 4b7", "b16 6yt"), average_download_speed = c(1.3, 
1.5)), class = "data.frame", row.names = c(NA, -2L))
```
伯明翰=c(“b15”、“b16”、“b17”) 考文垂=c(“cv1”、“cv2”、“cv3”) df% 变异(城市=案例)( 单词(邮政编码,1)%in%伯明翰~“伯明翰”, %Coventry~“Coventry”中的单词(邮政编码,1)%, 对~“其他城市” )) ``` 资料 ```
df带有
base R
的选项是

mydata$postcode2 <-  sub("\\s+.*", '', mydata$postcode)
merge(mydata, mydata2, by.x = 'postcode2', by.y = 'postcode', all.x = TRUE)

mydata$postcode2带有
base R
的选项是

mydata$postcode2 <-  sub("\\s+.*", '', mydata$postcode)
merge(mydata, mydata2, by.x = 'postcode2', by.y = 'postcode', all.x = TRUE)

mydata$postcode2您好谢谢您的帮助,我正在尝试从一列中提取多个不同的字符串值,并将它们分配给一个新的tible/变量。我尝试了以下形式:itemtoholddata=filter(tibble,column\u name==“string1”&column\u name==“string2”&column\u name==“string3”),但失败了。我尝试过类似的方法,但找不到一种方法可以将多个字符串保存在同一个容器中Hello感谢这一非常有用的方法,我正在尝试从单个列中提取多个不同的字符串值,并将它们分配给一个新的TIBLE/变量。我尝试了以下形式:itemtoholddata=filter(tibble,column\u name==“string1”&column\u name==“string2”&column\u name==“string3”),但失败了。我也尝试过类似的方法,但是我找不到一种方法可以在同一个容器中保存多个字符串。您可以与我们共享一些数据吗?那会有帮助的。使用如下命令:dput(df[1:10,1:5])您需要用数据集的名称替换df;然后,该命令将打印一个复制数据的前十行和前五列的命令。根据需要进行调整。复制输出并将其放入您的问题中。您可以与我们共享一些数据吗?那会有帮助的。使用如下命令:dput(df[1:10,1:5])您需要用数据集的名称替换df;然后,该命令将打印一个复制数据的前十行和前五列的命令。根据需要进行调整。复制输出并将其放入您的问题中。